Vitaliy Margolen : dinput: Add SetCooperativeLevel tests to keyboard.

Alexandre Julliard julliard at wine.codeweavers.com
Tue Oct 17 06:12:30 CDT 2006


Module: wine
Branch: master
Commit: d35e4cd83cde7bb931f8c79a3633dece1bee55f2
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=d35e4cd83cde7bb931f8c79a3633dece1bee55f2

Author: Vitaliy Margolen <wine-patch at kievinfo.com>
Date:   Sun Oct 15 11:30:22 2006 -0600

dinput: Add SetCooperativeLevel tests to keyboard.

---

 dlls/dinput/tests/keyboard.c |   81 ++++++++++++++++++++++++++++++++++--------
 1 files changed, 65 insertions(+), 16 deletions(-)

diff --git a/dlls/dinput/tests/keyboard.c b/dlls/dinput/tests/keyboard.c
index 6b4a2fa..68155a1 100644
--- a/dlls/dinput/tests/keyboard.c
+++ b/dlls/dinput/tests/keyboard.c
@@ -18,6 +18,7 @@
 
 #define DIRECTINPUT_VERSION 0x0700
 
+#define COBJMACROS
 #define NONAMELESSSTRUCT
 #define NONAMELESSUNION
 #include <windows.h>
@@ -67,27 +68,15 @@ const char * get_file_version(const char
     return version;
 }
 
-static void keyboard_tests(DWORD version)
+static void acquire_tests(LPDIRECTINPUT pDI, HWND hwnd)
 {
     HRESULT hr;
-    LPDIRECTINPUT pDI;
     LPDIRECTINPUTDEVICE pKeyboard;
-    HINSTANCE hInstance = GetModuleHandle(NULL);
     BYTE kbd_state[256];
-    ULONG ref;
 
-    hr = DirectInputCreate(hInstance, version, &pDI, NULL);
-    ok(SUCCEEDED(hr), "DirectInputCreate() failed: %s\n", DXGetErrorString8(hr));
-    if (FAILED(hr)) return;
-    
-    
     hr = IDirectInput_CreateDevice(pDI, &GUID_SysKeyboard, &pKeyboard, NULL);
     ok(SUCCEEDED(hr), "IDirectInput_CreateDevice() failed: %s\n", DXGetErrorString8(hr));
-    if (FAILED(hr))
-    {
-        IDirectInput_Release(pDI);
-        return;
-    }
+    if (FAILED(hr)) return;
 
     hr = IDirectInputDevice_SetDataFormat(pKeyboard, &c_dfDIKeyboard);
     ok(SUCCEEDED(hr), "IDirectInputDevice_SetDataFormat() failed: %s\n", DXGetErrorString8(hr));
@@ -103,8 +92,68 @@ static void keyboard_tests(DWORD version
     ok(hr == DIERR_INVALIDPARAM, "IDirectInputDevice_GetDeviceState(10,) should have failed: %s\n", DXGetErrorString8(hr));
     hr = IDirectInputDevice_GetDeviceState(pKeyboard, sizeof(kbd_state), kbd_state);
     ok(SUCCEEDED(hr), "IDirectInputDevice_GetDeviceState() failed: %s\n", DXGetErrorString8(hr));
-    
-    ref = IDirectInput_Release(pDI);
+}
+
+static const HRESULT SetCoop_null_window[16] =  {
+    E_INVALIDARG, E_INVALIDARG, E_INVALIDARG, E_INVALIDARG,
+    E_INVALIDARG, E_HANDLE,     E_HANDLE,     E_INVALIDARG,
+    E_INVALIDARG, E_HANDLE,     S_OK,         E_INVALIDARG,
+    E_INVALIDARG, E_INVALIDARG, E_INVALIDARG, E_INVALIDARG};
+
+static const HRESULT SetCoop_real_window[16] =  {
+    E_INVALIDARG, E_INVALIDARG, E_INVALIDARG, E_INVALIDARG,
+    E_INVALIDARG, S_OK,         S_OK,         E_INVALIDARG,
+    E_INVALIDARG, E_NOTIMPL,    S_OK,         E_INVALIDARG,
+    E_INVALIDARG, E_INVALIDARG, E_INVALIDARG, E_INVALIDARG};
+
+static void test_set_coop(LPDIRECTINPUT pDI, HWND hwnd)
+{
+    HRESULT hr;
+    LPDIRECTINPUTDEVICE pKeyboard = NULL;
+    int i;
+
+    hr = IDirectInput_CreateDevice(pDI, &GUID_SysKeyboard, &pKeyboard, NULL);
+    ok(SUCCEEDED(hr), "IDirectInput_CreateDevice() failed: %s\n", DXGetErrorString8(hr));
+    if (FAILED(hr)) return;
+
+    for (i=0; i<16; i++)
+    {
+        hr = IDirectInputDevice_SetCooperativeLevel(pKeyboard, NULL, i);
+        ok(hr == SetCoop_null_window[i], "SetCooperativeLevel(NULL, %d): %s\n", i, DXGetErrorString8(hr));
+    }
+    for (i=0; i<16; i++)
+    {
+        hr = IDirectInputDevice_SetCooperativeLevel(pKeyboard, hwnd, i);
+        ok(hr == SetCoop_real_window[i], "SetCooperativeLevel(hwnd, %d): %s\n", i, DXGetErrorString8(hr));
+    }
+
+    if (pKeyboard) IUnknown_Release(pKeyboard);
+}
+
+static void keyboard_tests(DWORD version)
+{
+    HRESULT hr;
+    LPDIRECTINPUT pDI = NULL;
+    HINSTANCE hInstance = GetModuleHandle(NULL);
+    HWND hwnd;
+    ULONG ref = 0;
+
+    hr = DirectInputCreate(hInstance, version, &pDI, NULL);
+    ok(SUCCEEDED(hr), "DirectInputCreate() failed: %s\n", DXGetErrorString8(hr));
+    if (FAILED(hr)) return;
+
+    hwnd = CreateWindow("static", "Title", WS_OVERLAPPEDWINDOW | WS_VISIBLE,
+                        10, 10, 200, 200, NULL, NULL, NULL, NULL);
+    ok(hwnd != NULL, "err: %d\n", GetLastError());
+
+    if (hwnd)
+    {
+        acquire_tests(pDI, hwnd);
+        test_set_coop(pDI, hwnd);
+    }
+
+    DestroyWindow(hwnd);
+    if (pDI) ref = IUnknown_Release(pDI);
     ok(!ref, "IDirectInput_Release() reference count = %d\n", ref);
 }
 




More information about the wine-cvs mailing list