static void test_GetDeviceStatus(void) { IDirectInput8A *pDI; HRESULT hr; hr = DirectInput8Create(hInstance, DIRECTINPUT_VERSION, &IID_IDirectInput8A, (void **)&pDI, NULL); if (FAILED(hr)) { win_skip("Failed to instantiate a IDirectInputA instance: 0x%08x\n", hr); return; } hr = IDirectInput8_GetDeviceStatus(pDI, NULL); todo_wine ok(hr == E_POINTER, "IDirectInput8_GetDeviceStatus returned 0x%08x\n", hr); hr = IDirectInput8_GetDeviceStatus(pDI, &GUID_Unknown); todo_wine ok(hr == DIERR_DEVICENOTREG, "IDirectInput8_GetDeviceStatus returned 0x%08x\n", hr); hr = IDirectInput8_GetDeviceStatus(pDI, &GUID_SysMouse); ok(hr == DI_OK, "IDirectInput8_GetDeviceStatus returned 0x%08x\n", hr); IDirectInput8_Release(pDI); }
static void test_preinitialization(void) { static const struct { REFGUID rguid; BOOL pdev; HRESULT expected_hr; } create_device_tests[] = { {NULL, FALSE, E_POINTER}, {NULL, TRUE, E_POINTER}, {&GUID_Unknown, FALSE, E_POINTER}, {&GUID_Unknown, TRUE, DIERR_NOTINITIALIZED}, {&GUID_SysMouse, FALSE, E_POINTER}, {&GUID_SysMouse, TRUE, DIERR_NOTINITIALIZED}, }; static const struct { DWORD dwDevType; LPDIENUMDEVICESCALLBACKA lpCallback; DWORD dwFlags; HRESULT expected_hr; int todo; } enum_devices_tests[] = { {0, NULL, 0, DIERR_INVALIDPARAM}, {0, NULL, ~0u, DIERR_INVALIDPARAM}, {0, dummy_callback, 0, DIERR_NOTINITIALIZED}, {0, dummy_callback, ~0u, DIERR_INVALIDPARAM}, {0xdeadbeef, NULL, 0, DIERR_INVALIDPARAM}, {0xdeadbeef, NULL, ~0u, DIERR_INVALIDPARAM}, {0xdeadbeef, dummy_callback, 0, DIERR_INVALIDPARAM}, {0xdeadbeef, dummy_callback, ~0u, DIERR_INVALIDPARAM}, }; IDirectInput8A *pDI; HRESULT hr; int i; IDirectInputDevice8A *pDID; hr = CoCreateInstance(&CLSID_DirectInput8, NULL, CLSCTX_INPROC_SERVER, &IID_IDirectInput8A, (void **)&pDI); if (FAILED(hr)) { skip("Failed to instantiate a IDirectInputA instance: 0x%08x\n", hr); return; } for (i = 0; i < ARRAY_SIZE(create_device_tests); i++) { if (create_device_tests[i].pdev) pDID = (void *)0xdeadbeef; hr = IDirectInput8_CreateDevice(pDI, create_device_tests[i].rguid, create_device_tests[i].pdev ? &pDID : NULL, NULL); ok(hr == create_device_tests[i].expected_hr, "[%d] IDirectInput8_CreateDevice returned 0x%08x\n", i, hr); if (create_device_tests[i].pdev) ok(pDID == NULL, "[%d] Output interface pointer is %p\n", i, pDID); } for (i = 0; i < ARRAY_SIZE(enum_devices_tests); i++) { hr = IDirectInput8_EnumDevices(pDI, enum_devices_tests[i].dwDevType, enum_devices_tests[i].lpCallback, NULL, enum_devices_tests[i].dwFlags); todo_wine_if(enum_devices_tests[i].todo) ok(hr == enum_devices_tests[i].expected_hr, "[%d] IDirectInput8_EnumDevice returned 0x%08x\n", i, hr); } hr = IDirectInput8_GetDeviceStatus(pDI, NULL); ok(hr == E_POINTER, "IDirectInput8_GetDeviceStatus returned 0x%08x\n", hr); hr = IDirectInput8_GetDeviceStatus(pDI, &GUID_Unknown); ok(hr == DIERR_NOTINITIALIZED, "IDirectInput8_GetDeviceStatus returned 0x%08x\n", hr); hr = IDirectInput8_GetDeviceStatus(pDI, &GUID_SysMouse); ok(hr == DIERR_NOTINITIALIZED, "IDirectInput8_GetDeviceStatus returned 0x%08x\n", hr); hr = IDirectInput8_RunControlPanel(pDI, NULL, 0); ok(hr == DIERR_NOTINITIALIZED, "IDirectInput8_RunControlPanel returned 0x%08x\n", hr); hr = IDirectInput8_RunControlPanel(pDI, NULL, ~0u); ok(hr == DIERR_INVALIDPARAM, "IDirectInput8_RunControlPanel returned 0x%08x\n", hr); hr = IDirectInput8_RunControlPanel(pDI, (HWND)0xdeadbeef, 0); ok(hr == E_HANDLE, "IDirectInput8_RunControlPanel returned 0x%08x\n", hr); hr = IDirectInput8_RunControlPanel(pDI, (HWND)0xdeadbeef, ~0u); ok(hr == E_HANDLE, "IDirectInput8_RunControlPanel returned 0x%08x\n", hr); IDirectInput8_Release(pDI); }