Alex Henrie : oleacc/tests: Add AccessibleObjectFromPoint tests.

Alexandre Julliard julliard at winehq.org
Thu Nov 25 16:00:26 CST 2021


Module: wine
Branch: master
Commit: 9d8bf363cf6251e54ebca29ebcdc9451c359faab
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=9d8bf363cf6251e54ebca29ebcdc9451c359faab

Author: Alex Henrie <alexhenrie24 at gmail.com>
Date:   Thu Nov 25 18:55:21 2021 +0100

oleacc/tests: Add AccessibleObjectFromPoint tests.

Signed-off-by: Alex Henrie <alexhenrie24 at gmail.com>
Signed-off-by: Piotr Caban <piotr at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/oleacc/tests/main.c | 67 ++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 67 insertions(+)

diff --git a/dlls/oleacc/tests/main.c b/dlls/oleacc/tests/main.c
index 8c234aee8aa..1f09581f64f 100644
--- a/dlls/oleacc/tests/main.c
+++ b/dlls/oleacc/tests/main.c
@@ -1304,6 +1304,72 @@ static void test_default_client_accessible_object(void)
     IAccessible_Release(acc);
 }
 
+static void test_AccessibleObjectFromPoint(void)
+{
+    HWND hwnd, child;
+    IAccessible *acc;
+    VARIANT cid, var;
+    POINT point;
+    HRESULT hr;
+
+    hwnd = CreateWindowA("oleacc_test", "test", WS_POPUP | WS_VISIBLE,
+            0, 0, 400, 300, NULL, NULL, NULL, NULL);
+    ok(hwnd != NULL, "CreateWindow failed\n");
+    ok(SetWindowLongPtrA(hwnd, GWLP_WNDPROC, (LONG_PTR)&DefWindowProcA),
+            "SetWindowLongPtr failed\n");
+
+    point.x = point.y = 0;
+    ok(ClientToScreen(hwnd, &point), "ClientToScreen failed\n");
+
+    if (WindowFromPoint(point) != hwnd)
+    {
+        win_skip("test window not returned from WindowFromPoint\n");
+        return;
+    }
+
+    hr = AccessibleObjectFromPoint(point, NULL, NULL);
+    ok(hr == E_INVALIDARG, "got %x\n", hr);
+
+    hr = AccessibleObjectFromPoint(point, &acc, NULL);
+    ok(hr == E_INVALIDARG, "got %x\n", hr);
+
+    V_VT(&cid) = VT_DISPATCH;
+    V_DISPATCH(&cid) = (IDispatch*)0xdeadbeef;
+    hr = AccessibleObjectFromPoint(point, NULL, &cid);
+    ok(hr == E_INVALIDARG, "got %x\n", hr);
+    ok(V_VT(&cid) == VT_DISPATCH, "got %#x, expected %#x\n", V_VT(&cid), VT_DISPATCH);
+
+    hr = AccessibleObjectFromPoint(point, &acc, &cid);
+    ok(hr == S_OK, "got %x\n", hr);
+    ok(V_VT(&cid) == VT_I4, "got %#x, expected %#x\n", V_VT(&cid), VT_I4);
+    ok(V_I4(&cid) == CHILDID_SELF, "got %#x, expected %#x\n", V_I4(&cid), CHILDID_SELF);
+    check_acc_hwnd((IUnknown*)acc, hwnd);
+    hr = IAccessible_get_accRole(acc, cid, &var);
+    ok(hr == S_OK, "got %x\n", hr);
+    ok(V_VT(&var) == VT_I4, "got %#x, expected %#x\n", V_VT(&var), VT_I4);
+    ok(V_I4(&var) == ROLE_SYSTEM_CLIENT, "got %#x, expected %#x\n",
+            V_I4(&var), ROLE_SYSTEM_CLIENT);
+    IAccessible_Release(acc);
+
+    child = CreateWindowA("edit", "edit", WS_CHILD | WS_VISIBLE,
+            0, 0, 100, 100, hwnd, NULL, NULL, NULL);
+    ok(child != NULL, "CreateWindow failed\n");
+
+    hr = AccessibleObjectFromPoint(point, &acc, &cid);
+    ok(hr == S_OK, "got %x\n", hr);
+    ok(V_VT(&cid) == VT_I4, "got %#x, expected %#x\n", V_VT(&cid), VT_I4);
+    ok(V_I4(&cid) == CHILDID_SELF, "got %#x, expected %#x\n", V_I4(&cid), CHILDID_SELF);
+    check_acc_hwnd((IUnknown*)acc, child);
+    hr = IAccessible_get_accRole(acc, cid, &var);
+    ok(hr == S_OK, "got %x\n", hr);
+    ok(V_VT(&var) == VT_I4, "got %#x, expected %#x\n", V_VT(&var), VT_I4);
+    ok(V_I4(&var) == ROLE_SYSTEM_TEXT, "got %#x, expected %#x\n",
+            V_I4(&var), ROLE_SYSTEM_TEXT);
+    IAccessible_Release(acc);
+
+    DestroyWindow(hwnd);
+}
+
 static void test_CAccPropServices(void)
 {
     IAccPropServices *acc_prop_services;
@@ -1749,6 +1815,7 @@ START_TEST(main)
     test_default_client_accessible_object();
     test_AccessibleChildren(&Accessible);
     test_AccessibleObjectFromEvent();
+    test_AccessibleObjectFromPoint();
     test_CreateStdAccessibleObject_classes();
     test_default_edit_accessible_object();
 




More information about the wine-cvs mailing list