Author: akhaldi
Date: Sat Sep 28 15:39:51 2013
New Revision: 60438
URL:
http://svn.reactos.org/svn/reactos?rev=60438&view=rev
Log:
[XINPUT1_3_WINETEST]
* Import from Wine 1.7.1.
CORE-7469
Added:
trunk/rostests/winetests/xinput1_3/
trunk/rostests/winetests/xinput1_3/CMakeLists.txt (with props)
trunk/rostests/winetests/xinput1_3/testlist.c (with props)
trunk/rostests/winetests/xinput1_3/xinput.c (with props)
Modified:
trunk/rostests/winetests/CMakeLists.txt
Modified: trunk/rostests/winetests/CMakeLists.txt
URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/CMakeLists.txt?…
==============================================================================
--- trunk/rostests/winetests/CMakeLists.txt [iso-8859-1] (original)
+++ trunk/rostests/winetests/CMakeLists.txt [iso-8859-1] Sat Sep 28 15:39:51 2013
@@ -104,4 +104,5 @@
add_subdirectory(wlanapi)
add_subdirectory(wldap32)
add_subdirectory(ws2_32)
+add_subdirectory(xinput1_3)
add_subdirectory(xmllite)
Added: trunk/rostests/winetests/xinput1_3/CMakeLists.txt
URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/xinput1_3/CMake…
==============================================================================
--- trunk/rostests/winetests/xinput1_3/CMakeLists.txt (added)
+++ trunk/rostests/winetests/xinput1_3/CMakeLists.txt [iso-8859-1] Sat Sep 28 15:39:51
2013
@@ -0,0 +1,5 @@
+
+add_executable(xinput1_3_winetest xinput.c testlist.c)
+set_module_type(xinput1_3_winetest win32cui)
+add_importlibs(xinput1_3_winetest user32 msvcrt kernel32)
+add_cd_file(TARGET xinput1_3_winetest DESTINATION reactos/bin FOR all)
Propchange: trunk/rostests/winetests/xinput1_3/CMakeLists.txt
------------------------------------------------------------------------------
svn:eol-style = native
Added: trunk/rostests/winetests/xinput1_3/testlist.c
URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/xinput1_3/testl…
==============================================================================
--- trunk/rostests/winetests/xinput1_3/testlist.c (added)
+++ trunk/rostests/winetests/xinput1_3/testlist.c [iso-8859-1] Sat Sep 28 15:39:51 2013
@@ -0,0 +1,12 @@
+/* Automatically generated file; DO NOT EDIT!! */
+
+#define STANDALONE
+#include <wine/test.h>
+
+extern void func_xinput(void);
+
+const struct test winetest_testlist[] =
+{
+ { "xinput", func_xinput },
+ { 0, 0 }
+};
Propchange: trunk/rostests/winetests/xinput1_3/testlist.c
------------------------------------------------------------------------------
svn:eol-style = native
Added: trunk/rostests/winetests/xinput1_3/xinput.c
URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/xinput1_3/xinpu…
==============================================================================
--- trunk/rostests/winetests/xinput1_3/xinput.c (added)
+++ trunk/rostests/winetests/xinput1_3/xinput.c [iso-8859-1] Sat Sep 28 15:39:51 2013
@@ -0,0 +1,223 @@
+/*
+ * The Wine project - Xinput Joystick Library
+ * Copyright 2008 Andrew Fenn
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#include <windows.h>
+#include <stdio.h>
+
+#include "xinput.h"
+#include "wine/test.h"
+
+static DWORD (WINAPI *pXInputGetState)(DWORD, XINPUT_STATE*);
+static DWORD (WINAPI *pXInputGetCapabilities)(DWORD,DWORD,XINPUT_CAPABILITIES*);
+static DWORD (WINAPI *pXInputSetState)(DWORD, XINPUT_VIBRATION*);
+static void (WINAPI *pXInputEnable)(BOOL);
+static DWORD (WINAPI *pXInputGetKeystroke)(DWORD, DWORD, PXINPUT_KEYSTROKE);
+static DWORD (WINAPI *pXInputGetDSoundAudioDeviceGuids)(DWORD, GUID*, GUID*);
+static DWORD (WINAPI *pXInputGetBatteryInformation)(DWORD, BYTE,
XINPUT_BATTERY_INFORMATION*);
+
+static void test_set_state(void)
+{
+ XINPUT_VIBRATION vibrator;
+ DWORD controllerNum;
+ DWORD result;
+
+ for(controllerNum=0; controllerNum < XUSER_MAX_COUNT; controllerNum++)
+ {
+ ZeroMemory(&vibrator, sizeof(XINPUT_VIBRATION));
+
+ vibrator.wLeftMotorSpeed = 0;
+ vibrator.wRightMotorSpeed = 0;
+ result = pXInputSetState(controllerNum, &vibrator);
+ ok(result == ERROR_SUCCESS || result == ERROR_DEVICE_NOT_CONNECTED,
"XInputSetState failed with (%d)\n", result);
+
+ 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);
+ }
+
+ result = pXInputSetState(XUSER_MAX_COUNT+1, &vibrator);
+ ok(result == ERROR_BAD_ARGUMENTS, "XInputSetState returned (%d)\n",
result);
+}
+
+static void test_get_state(void)
+{
+
+ XINPUT_STATE controllerState;
+ DWORD controllerNum;
+ DWORD result;
+
+ for(controllerNum=0; controllerNum < XUSER_MAX_COUNT; controllerNum++)
+ {
+ ZeroMemory(&controllerState, sizeof(XINPUT_STATE));
+
+ result = pXInputGetState(controllerNum, &controllerState);
+ ok(result == ERROR_SUCCESS || result == ERROR_DEVICE_NOT_CONNECTED,
"XInputGetState failed with (%d)\n", result);
+
+ if (ERROR_DEVICE_NOT_CONNECTED == result)
+ {
+ skip("Controller %d is not connected\n", controllerNum);
+ }
+ else
+ {
+ trace("-- Results for controller %d --\n", controllerNum);
+ trace("XInputGetState: %d\n", result);
+ trace("State->dwPacketNumber: %d\n",
controllerState.dwPacketNumber);
+ trace("Gamepad Variables --\n");
+ trace("Gamepad.wButtons: %#x\n",
controllerState.Gamepad.wButtons);
+ trace("Gamepad.bLeftTrigger: 0x%08x\n",
controllerState.Gamepad.bLeftTrigger);
+ trace("Gamepad.bRightTrigger: 0x%08x\n",
controllerState.Gamepad.bRightTrigger);
+ trace("Gamepad.sThumbLX: %d\n", controllerState.Gamepad.sThumbLX);
+ trace("Gamepad.sThumbLY: %d\n", controllerState.Gamepad.sThumbLY);
+ trace("Gamepad.sThumbRX: %d\n", controllerState.Gamepad.sThumbRX);
+ trace("Gamepad.sThumbRY: %d\n", controllerState.Gamepad.sThumbRY);
+ }
+ }
+
+ ZeroMemory(&controllerState, sizeof(XINPUT_STATE));
+ result = pXInputGetState(XUSER_MAX_COUNT+1, &controllerState);
+ ok(result == ERROR_BAD_ARGUMENTS, "XInputGetState returned (%d)\n",
result);
+}
+
+static void test_get_keystroke(void)
+{
+ XINPUT_KEYSTROKE keystroke;
+ DWORD controllerNum;
+ DWORD result;
+
+ for(controllerNum=0; controllerNum < XUSER_MAX_COUNT; controllerNum++)
+ {
+ ZeroMemory(&keystroke, sizeof(XINPUT_KEYSTROKE));
+
+ result = pXInputGetKeystroke(controllerNum, XINPUT_FLAG_GAMEPAD,
&keystroke);
+ ok(result == ERROR_SUCCESS || result == ERROR_DEVICE_NOT_CONNECTED,
"XInputGetKeystroke failed with (%d)\n", result);
+
+ if (ERROR_DEVICE_NOT_CONNECTED == result)
+ {
+ skip("Controller %d is not connected\n", controllerNum);
+ }
+ }
+
+ ZeroMemory(&keystroke, sizeof(XINPUT_KEYSTROKE));
+ result = pXInputGetKeystroke(XUSER_MAX_COUNT+1, XINPUT_FLAG_GAMEPAD,
&keystroke);
+ ok(result == ERROR_BAD_ARGUMENTS, "XInputGetKeystroke returned (%d)\n",
result);
+}
+
+static void test_get_capabilities(void)
+{
+ XINPUT_CAPABILITIES capabilities;
+ DWORD controllerNum;
+ DWORD result;
+
+ for(controllerNum=0; controllerNum < XUSER_MAX_COUNT; controllerNum++)
+ {
+ ZeroMemory(&capabilities, sizeof(XINPUT_CAPABILITIES));
+
+ result = pXInputGetCapabilities(controllerNum, XINPUT_FLAG_GAMEPAD,
&capabilities);
+ ok(result == ERROR_SUCCESS || result == ERROR_DEVICE_NOT_CONNECTED,
"XInputGetCapabilities failed with (%d)\n", result);
+
+ if (ERROR_DEVICE_NOT_CONNECTED == result)
+ {
+ skip("Controller %d is not connected\n", controllerNum);
+ }
+ }
+
+ ZeroMemory(&capabilities, sizeof(XINPUT_CAPABILITIES));
+ result = pXInputGetCapabilities(XUSER_MAX_COUNT+1, XINPUT_FLAG_GAMEPAD,
&capabilities);
+ ok(result == ERROR_BAD_ARGUMENTS, "XInputGetCapabilities returned (%d)\n",
result);
+}
+
+static void test_get_dsoundaudiodevice(void)
+{
+ DWORD controllerNum;
+ DWORD result;
+ GUID soundRender;
+ GUID soundCapture;
+
+ for(controllerNum=0; controllerNum < XUSER_MAX_COUNT; controllerNum++)
+ {
+ result = pXInputGetDSoundAudioDeviceGuids(controllerNum, &soundRender,
&soundCapture);
+ ok(result == ERROR_SUCCESS || result == ERROR_DEVICE_NOT_CONNECTED,
"XInputGetDSoundAudioDeviceGuids failed with (%d)\n", result);
+
+ if (ERROR_DEVICE_NOT_CONNECTED == result)
+ {
+ skip("Controller %d is not connected\n", controllerNum);
+ }
+ }
+
+ result = pXInputGetDSoundAudioDeviceGuids(XUSER_MAX_COUNT+1, &soundRender,
&soundCapture);
+ ok(result == ERROR_BAD_ARGUMENTS, "XInputGetDSoundAudioDeviceGuids returned
(%d)\n", result);
+}
+
+static void test_get_batteryinformation(void)
+{
+ DWORD controllerNum;
+ DWORD result;
+ XINPUT_BATTERY_INFORMATION batteryInfo;
+
+ for(controllerNum=0; controllerNum < XUSER_MAX_COUNT; controllerNum++)
+ {
+ ZeroMemory(&batteryInfo, sizeof(XINPUT_BATTERY_INFORMATION));
+
+ result = pXInputGetBatteryInformation(controllerNum, BATTERY_DEVTYPE_GAMEPAD,
&batteryInfo);
+ ok(result == ERROR_SUCCESS || result == ERROR_DEVICE_NOT_CONNECTED,
"XInputGetBatteryInformation failed with (%d)\n", result);
+
+ if (ERROR_DEVICE_NOT_CONNECTED == result)
+ {
+ ok(batteryInfo.BatteryLevel == BATTERY_TYPE_DISCONNECTED, "Failed to
report device as being disconnected.\n");
+ skip("Controller %d is not connected\n", controllerNum);
+ }
+ }
+
+ result = pXInputGetBatteryInformation(XUSER_MAX_COUNT+1, BATTERY_DEVTYPE_GAMEPAD,
&batteryInfo);
+ ok(result == ERROR_BAD_ARGUMENTS, "XInputGetBatteryInformation returned
(%d)\n", result);
+}
+
+START_TEST(xinput)
+{
+ HMODULE hXinput;
+ hXinput = LoadLibraryA( "xinput1_3.dll" );
+
+ if (!hXinput)
+ {
+ win_skip("Could not load xinput1_3.dll\n");
+ return;
+ }
+
+ pXInputEnable = (void*)GetProcAddress(hXinput, "XInputEnable");
+ pXInputSetState = (void*)GetProcAddress(hXinput, "XInputSetState");
+ pXInputGetState = (void*)GetProcAddress(hXinput, "XInputGetState");
+ pXInputGetKeystroke = (void*)GetProcAddress(hXinput,
"XInputGetKeystroke");
+ pXInputGetCapabilities = (void*)GetProcAddress(hXinput,
"XInputGetCapabilities");
+ pXInputGetDSoundAudioDeviceGuids = (void*)GetProcAddress(hXinput,
"XInputGetDSoundAudioDeviceGuids");
+ pXInputGetBatteryInformation = (void*)GetProcAddress(hXinput,
"XInputGetBatteryInformation");
+
+ test_set_state();
+ test_get_state();
+ test_get_keystroke();
+ test_get_capabilities();
+ test_get_dsoundaudiodevice();
+ test_get_batteryinformation();
+
+ FreeLibrary(hXinput);
+}
Propchange: trunk/rostests/winetests/xinput1_3/xinput.c
------------------------------------------------------------------------------
svn:eol-style = native