Piotr Caban : oleacc: Add tests for default client accessible object.
Alexandre Julliard
julliard at winehq.org
Thu May 1 14:40:00 CDT 2014
Module: wine
Branch: master
Commit: 7c029e02aed77b88a3e0342a071a91359c7614d9
URL: http://source.winehq.org/git/wine.git/?a=commit;h=7c029e02aed77b88a3e0342a071a91359c7614d9
Author: Piotr Caban <piotr at codeweavers.com>
Date: Thu May 1 16:56:44 2014 +0200
oleacc: Add tests for default client accessible object.
---
dlls/oleacc/tests/Makefile.in | 2 +-
dlls/oleacc/tests/main.c | 114 +++++++++++++++++++++++++++++++++++++++++
2 files changed, 115 insertions(+), 1 deletion(-)
diff --git a/dlls/oleacc/tests/Makefile.in b/dlls/oleacc/tests/Makefile.in
index 2b0157d..7773ba9 100644
--- a/dlls/oleacc/tests/Makefile.in
+++ b/dlls/oleacc/tests/Makefile.in
@@ -1,5 +1,5 @@
TESTDLL = oleacc.dll
-IMPORTS = ole32 oleacc user32
+IMPORTS = ole32 oleacc oleaut32 user32
C_SRCS = \
main.c
diff --git a/dlls/oleacc/tests/main.c b/dlls/oleacc/tests/main.c
index c5c50b8..0162d72 100644
--- a/dlls/oleacc/tests/main.c
+++ b/dlls/oleacc/tests/main.c
@@ -215,6 +215,11 @@ static LRESULT WINAPI test_window_proc(HWND hwnd, UINT msg, WPARAM wparam, LPARA
{
switch(msg) {
case WM_GETOBJECT:
+ if(lparam == OBJID_QUERYCLASSNAMEIDX) {
+ ok(!wparam, "wparam = %lx\n", wparam);
+ return 0;
+ }
+
ok(wparam==0xffffffff || broken(wparam==0x8000), "wparam = %lx\n", wparam);
if(lparam == (DWORD)OBJID_CURSOR)
return E_UNEXPECTED;
@@ -274,6 +279,114 @@ static void test_AccessibleObjectFromWindow(void)
DestroyWindow(hwnd);
}
+static void test_default_client_accessible_object(void)
+{
+ static const WCHAR testW[] = {'t','e','s','t',' ','t',' ','&','j','u','n','k',0};
+ static const WCHAR shortcutW[] = {'A','l','t','+','t',0};
+
+ IAccessible *acc;
+ HWND chld, hwnd;
+ HRESULT hr;
+ VARIANT vid, v;
+ BSTR str;
+ LONG l;
+
+ hwnd = CreateWindowA("oleacc_test", "test &t &junk", WS_OVERLAPPEDWINDOW,
+ 0, 0, 0, 0, NULL, NULL, NULL, NULL);
+ ok(hwnd != NULL, "CreateWindow failed\n");
+ chld = CreateWindowA("static", "message", WS_CHILD,
+ 0, 0, 0, 0, hwnd, NULL, NULL, NULL);
+ ok(chld != NULL, "CreateWindow failed\n");
+
+ hr = CreateStdAccessibleObject(NULL, OBJID_CLIENT, &IID_IAccessible, (void**)&acc);
+ ok(hr == E_FAIL, "got %x\n", hr);
+
+ hr = CreateStdAccessibleObject(hwnd, OBJID_CLIENT, &IID_IAccessible, (void**)&acc);
+ ok(hr == S_OK, "got %x\n", hr);
+
+ hr = IAccessible_get_accChildCount(acc, &l);
+ ok(hr == S_OK, "got %x\n", hr);
+ ok(l == 1, "l = %d\n", l);
+
+ V_VT(&vid) = VT_I4;
+ V_I4(&vid) = CHILDID_SELF;
+ hr = IAccessible_get_accName(acc, vid, &str);
+ ok(hr == S_OK, "got %x\n", hr);
+ ok(!lstrcmpW(str, testW), "name = %s\n", wine_dbgstr_w(str));
+ SysFreeString(str);
+
+ V_I4(&vid) = 1;
+ str = (void*)0xdeadbeef;
+ hr = IAccessible_get_accName(acc, vid, &str);
+ ok(hr == E_INVALIDARG, "got %x\n", hr);
+ ok(!str, "str != NULL\n");
+ V_I4(&vid) = CHILDID_SELF;
+
+ str = (void*)0xdeadbeef;
+ hr = IAccessible_get_accValue(acc, vid, &str);
+ ok(hr == S_FALSE, "got %x\n", hr);
+ ok(!str, "str != NULL\n");
+
+ str = (void*)0xdeadbeef;
+ hr = IAccessible_get_accDescription(acc, vid, &str);
+ ok(hr == S_FALSE, "got %x\n", hr);
+ ok(!str, "str != NULL\n");
+
+ V_VT(&v) = VT_DISPATCH;
+ V_DISPATCH(&v) = (void*)0xdeadbeef;
+ hr = IAccessible_get_accRole(acc, vid, &v);
+ ok(hr == S_OK, "got %x\n", hr);
+ ok(V_VT(&v) == VT_I4, "V_VT(&v) = %d\n", V_VT(&v));
+ ok(V_I4(&v) == ROLE_SYSTEM_CLIENT, "V_I4(&v) = %d\n", V_I4(&v));
+
+ V_VT(&v) = VT_DISPATCH;
+ V_DISPATCH(&v) = (void*)0xdeadbeef;
+ hr = IAccessible_get_accState(acc, vid, &v);
+ ok(hr == S_OK, "got %x\n", hr);
+ ok(V_VT(&v) == VT_I4, "V_VT(&v) = %d\n", V_VT(&v));
+ ok(V_I4(&v) == (STATE_SYSTEM_FOCUSABLE|STATE_SYSTEM_INVISIBLE) ||
+ broken(V_I4(&v) == STATE_SYSTEM_INVISIBLE), "V_I4(&v) = %x\n", V_I4(&v));
+
+ str = (void*)0xdeadbeef;
+ hr = IAccessible_get_accHelp(acc, vid, &str);
+ ok(hr == S_FALSE, "got %x\n", hr);
+ ok(!str, "str != NULL\n");
+
+ hr = IAccessible_get_accKeyboardShortcut(acc, vid, &str);
+ ok(hr == S_OK, "got %x\n", hr);
+ ok(!lstrcmpW(str, shortcutW), "str = %s\n", wine_dbgstr_w(str));
+ SysFreeString(str);
+
+ str = (void*)0xdeadbeef;
+ hr = IAccessible_get_accDefaultAction(acc, vid, &str);
+ ok(hr == S_FALSE, "got %x\n", hr);
+ ok(!str, "str != NULL\n");
+
+ DestroyWindow(hwnd);
+
+ hr = IAccessible_get_accChildCount(acc, &l);
+ ok(hr == S_OK, "got %x\n", hr);
+ ok(l == 0, "l = %d\n", l);
+
+ hr = IAccessible_get_accName(acc, vid, &str);
+ ok(hr == E_INVALIDARG, "got %x\n", hr);
+
+ hr = IAccessible_get_accValue(acc, vid, &str);
+ ok(hr == S_FALSE, "got %x\n", hr);
+
+ hr = IAccessible_get_accRole(acc, vid, &v);
+ ok(hr == S_OK, "got %x\n", hr);
+ ok(V_VT(&v) == VT_I4, "V_VT(&v) = %d\n", V_VT(&v));
+ ok(V_I4(&v) == ROLE_SYSTEM_CLIENT, "V_I4(&v) = %d\n", V_I4(&v));
+
+ hr = IAccessible_get_accState(acc, vid, &v);
+ ok(hr == S_OK, "got %x\n", hr);
+ ok(V_VT(&v) == VT_I4, "V_VT(&v) = %d\n", V_VT(&v));
+ ok(V_I4(&v) == STATE_SYSTEM_INVISIBLE, "V_I4(&v) = %x\n", V_I4(&v));
+
+ IAccessible_Release(acc);
+}
+
START_TEST(main)
{
int argc;
@@ -304,6 +417,7 @@ START_TEST(main)
test_getroletext();
test_LresultFromObject(argv[0]);
test_AccessibleObjectFromWindow();
+ test_default_client_accessible_object();
unregister_window_class();
CoUninitialize();
More information about the wine-cvs
mailing list