[PATCH 2/3] xinput1_3: Test every xinput DLL version
Bruno Jesus
00cpxxx at gmail.com
Sat Sep 10 16:46:26 CDT 2016
Tested manually in XP/7 with a xbox360 controller.
Signed-off-by: Bruno Jesus <00cpxxx at gmail.com>
---
dlls/xinput1_3/tests/xinput.c | 93 +++++++++++++++++++++++++++++--------------
1 file changed, 63 insertions(+), 30 deletions(-)
diff --git a/dlls/xinput1_3/tests/xinput.c b/dlls/xinput1_3/tests/xinput.c
index fadacae..ef11b50 100644
--- a/dlls/xinput1_3/tests/xinput.c
+++ b/dlls/xinput1_3/tests/xinput.c
@@ -47,14 +47,14 @@ static void test_set_state(void)
result = pXInputSetState(controllerNum, &vibrator);
ok(result == ERROR_SUCCESS || result == ERROR_DEVICE_NOT_CONNECTED, "XInputSetState failed with (%d)\n", result);
- pXInputEnable(0);
+ if (pXInputEnable) pXInputEnable(0);
vibrator.wLeftMotorSpeed = 65535;
vibrator.wRightMotorSpeed = 65535;
result = pXInputSetState(controllerNum, &vibrator);
ok(result == ERROR_SUCCESS || result == ERROR_DEVICE_NOT_CONNECTED, "XInputSetState failed with (%d)\n", result);
- pXInputEnable(1);
+ if (pXInputEnable) pXInputEnable(1);
}
result = pXInputSetState(XUSER_MAX_COUNT+1, &vibrator);
@@ -218,37 +218,70 @@ static void test_get_batteryinformation(void)
START_TEST(xinput)
{
+ struct
+ {
+ const char *name;
+ int version;
+ } libs[] = {
+ { "xinput1_1.dll", 1 },
+ { "xinput1_2.dll", 2 },
+ { "xinput1_3.dll", 3 },
+ { "xinput1_4.dll", 4 },
+ { "xinput9_1_0.dll", 0 } /* legacy for XP/Vista */
+ };
HMODULE hXinput;
void *pXInputGetStateEx_Ordinal;
- hXinput = LoadLibraryA( "xinput1_3.dll" );
+ int i;
- if (!hXinput)
+ for (i = 0; i < sizeof(libs) / sizeof(libs[0]); i++)
{
- win_skip("Could not load xinput1_3.dll\n");
- return;
- }
+ hXinput = LoadLibraryA( libs[i].name );
+
+ if (!hXinput)
+ {
+ win_skip("Could not load %s\n", libs[i].name);
+ continue;
+ }
+ trace("Testing %s\n", libs[i].name);
+
+ pXInputEnable = (void*)GetProcAddress(hXinput, "XInputEnable");
+ pXInputSetState = (void*)GetProcAddress(hXinput, "XInputSetState");
+ pXInputGetState = (void*)GetProcAddress(hXinput, "XInputGetState");
+ pXInputGetStateEx = (void*)GetProcAddress(hXinput, "XInputGetStateEx"); /* Win >= 8 */
+ pXInputGetStateEx_Ordinal = (void*)GetProcAddress(hXinput, (LPCSTR) 100);
+ pXInputGetKeystroke = (void*)GetProcAddress(hXinput, "XInputGetKeystroke");
+ pXInputGetCapabilities = (void*)GetProcAddress(hXinput, "XInputGetCapabilities");
+ pXInputGetDSoundAudioDeviceGuids = (void*)GetProcAddress(hXinput, "XInputGetDSoundAudioDeviceGuids");
+ pXInputGetBatteryInformation = (void*)GetProcAddress(hXinput, "XInputGetBatteryInformation");
+
+ /* XInputGetStateEx may not be present by name, use ordinal in this case */
+ if (!pXInputGetStateEx)
+ pXInputGetStateEx = pXInputGetStateEx_Ordinal;
+
+ test_set_state();
+ test_get_state();
+ test_get_capabilities();
+
+ if (libs[i].version != 4)
+ test_get_dsoundaudiodevice();
+ else
+ ok(!pXInputGetDSoundAudioDeviceGuids, "XInputGetDSoundAudioDeviceGuids exists in %s\n", libs[i].name);
+
+ if (libs[i].version > 2)
+ {
+ test_get_keystroke();
+ test_get_batteryinformation();
+ ok(pXInputGetStateEx != NULL, "XInputGetStateEx not found in %s\n", libs[i].name);
+ }
+ else
+ {
+ ok(!pXInputGetKeystroke, "XInputGetKeystroke exists in %s\n", libs[i].name);
+ ok(!pXInputGetStateEx, "XInputGetStateEx exists in %s\n", libs[i].name);
+ ok(!pXInputGetBatteryInformation, "XInputGetBatteryInformation exists in %s\n", libs[i].name);
+ if (libs[i].version == 0)
+ ok(!pXInputEnable, "XInputEnable exists in %s\n", libs[i].name);
+ }
- pXInputEnable = (void*)GetProcAddress(hXinput, "XInputEnable");
- pXInputSetState = (void*)GetProcAddress(hXinput, "XInputSetState");
- pXInputGetState = (void*)GetProcAddress(hXinput, "XInputGetState");
- pXInputGetStateEx = (void*)GetProcAddress(hXinput, "XInputGetStateEx"); /* Win >= 8 */
- pXInputGetStateEx_Ordinal = (void*)GetProcAddress(hXinput, (LPCSTR) 100);
- pXInputGetKeystroke = (void*)GetProcAddress(hXinput, "XInputGetKeystroke");
- pXInputGetCapabilities = (void*)GetProcAddress(hXinput, "XInputGetCapabilities");
- pXInputGetDSoundAudioDeviceGuids = (void*)GetProcAddress(hXinput, "XInputGetDSoundAudioDeviceGuids");
- pXInputGetBatteryInformation = (void*)GetProcAddress(hXinput, "XInputGetBatteryInformation");
-
- /* XInputGetStateEx may not be present by name, use ordinal in this case */
- if (!pXInputGetStateEx)
- pXInputGetStateEx = pXInputGetStateEx_Ordinal;
- ok (pXInputGetStateEx != NULL, "XInputGetStateEx not found in this dll version\n");
-
- test_set_state();
- test_get_state();
- test_get_keystroke();
- test_get_capabilities();
- test_get_dsoundaudiodevice();
- test_get_batteryinformation();
-
- FreeLibrary(hXinput);
+ FreeLibrary(hXinput);
+ }
}
--
2.9.3
More information about the wine-patches
mailing list