Piotr Caban : oleacc: Add AccessibleObjectFromWindow tests.
Alexandre Julliard
julliard at winehq.org
Mon Apr 28 13:27:00 CDT 2014
Module: wine
Branch: master
Commit: 41f5b15523cf6705e3e71d15e28239755038974c
URL: http://source.winehq.org/git/wine.git/?a=commit;h=41f5b15523cf6705e3e71d15e28239755038974c
Author: Piotr Caban <piotr at codeweavers.com>
Date: Mon Apr 28 17:30:36 2014 +0200
oleacc: Add AccessibleObjectFromWindow tests.
---
dlls/oleacc/tests/Makefile.in | 2 +-
dlls/oleacc/tests/main.c | 70 +++++++++++++++++++++++++++++++++++++++++
2 files changed, 71 insertions(+), 1 deletion(-)
diff --git a/dlls/oleacc/tests/Makefile.in b/dlls/oleacc/tests/Makefile.in
index 374f15d..2b0157d 100644
--- a/dlls/oleacc/tests/Makefile.in
+++ b/dlls/oleacc/tests/Makefile.in
@@ -1,5 +1,5 @@
TESTDLL = oleacc.dll
-IMPORTS = ole32 oleacc
+IMPORTS = ole32 oleacc user32
C_SRCS = \
main.c
diff --git a/dlls/oleacc/tests/main.c b/dlls/oleacc/tests/main.c
index e3daefe..c5c50b8 100644
--- a/dlls/oleacc/tests/main.c
+++ b/dlls/oleacc/tests/main.c
@@ -211,6 +211,69 @@ static void test_LresultFromObject(const char *name)
ok(Object_ref == 1, "Object_ref = %d\n", Object_ref);
}
+static LRESULT WINAPI test_window_proc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam)
+{
+ switch(msg) {
+ case WM_GETOBJECT:
+ ok(wparam==0xffffffff || broken(wparam==0x8000), "wparam = %lx\n", wparam);
+ if(lparam == (DWORD)OBJID_CURSOR)
+ return E_UNEXPECTED;
+ if(lparam == (DWORD)OBJID_CLIENT)
+ return LresultFromObject(&IID_IUnknown, wparam, &Object);
+
+ ok(0, "unexpected (%ld)\n", lparam);
+ return 0;
+ }
+
+ return DefWindowProcA(hwnd, msg, wparam, lparam);
+}
+
+static BOOL register_window_class(void)
+{
+ WNDCLASSA cls;
+
+ memset(&cls, 0, sizeof(cls));
+ cls.lpfnWndProc = test_window_proc;
+ cls.lpszClassName = "oleacc_test";
+ cls.hInstance = GetModuleHandleA(NULL);
+
+ return RegisterClassA(&cls);
+}
+
+static void unregister_window_class(void)
+{
+ UnregisterClassA("oleacc_test", NULL);
+}
+
+static void test_AccessibleObjectFromWindow(void)
+{
+ IUnknown *unk;
+ HRESULT hr;
+ HWND hwnd;
+
+ hr = AccessibleObjectFromWindow(NULL, OBJID_CURSOR, &IID_IUnknown, NULL);
+ ok(hr == E_INVALIDARG, "got %x\n", hr);
+
+ hr = AccessibleObjectFromWindow(NULL, OBJID_CURSOR, &IID_IUnknown, (void**)&unk);
+ todo_wine ok(hr == S_OK, "got %x\n", hr);
+ if(hr == S_OK) IUnknown_Release(unk);
+
+ hwnd = CreateWindowA("oleacc_test", "test", WS_OVERLAPPEDWINDOW,
+ 0, 0, 0, 0, NULL, NULL, NULL, NULL);
+ ok(hwnd != NULL, "CreateWindow failed\n");
+
+ hr = AccessibleObjectFromWindow(hwnd, OBJID_CURSOR, &IID_IUnknown, (void**)&unk);
+ ok(hr == E_UNEXPECTED, "got %x\n", hr);
+
+ ok(Object_ref == 1, "Object_ref = %d\n", Object_ref);
+ hr = AccessibleObjectFromWindow(hwnd, OBJID_CLIENT, &IID_IUnknown, (void**)&unk);
+ ok(hr == S_OK, "got %x\n", hr);
+ ok(Object_ref == 2, "Object_ref = %d\n", Object_ref);
+ IUnknown_Release(unk);
+
+ DestroyWindow(hwnd);
+}
+
START_TEST(main)
{
int argc;
@@ -233,8 +296,15 @@ START_TEST(main)
return;
}
+ if(!register_window_class()) {
+ skip("can't register test window class\n");
+ return;
+ }
+
test_getroletext();
test_LresultFromObject(argv[0]);
+ test_AccessibleObjectFromWindow();
+ unregister_window_class();
CoUninitialize();
}
More information about the wine-cvs
mailing list