Lucas Fialho Zawacki : dinput8/tests: Tests for creation and initialization of DInput8 interface and simple cases of EnumDevicesBySemantics .
Alexandre Julliard
julliard at winehq.org
Mon May 2 14:16:15 CDT 2011
Module: wine
Branch: master
Commit: 1fbf857dc19b3e663ecfae6a8601d6f8303fcab2
URL: http://source.winehq.org/git/wine.git/?a=commit;h=1fbf857dc19b3e663ecfae6a8601d6f8303fcab2
Author: Lucas Fialho Zawacki <lfzawacki at gmail.com>
Date: Fri Apr 29 19:29:19 2011 -0300
dinput8/tests: Tests for creation and initialization of DInput8 interface and simple cases of EnumDevicesBySemantics.
---
configure | 1 +
configure.ac | 1 +
dlls/dinput8/tests/Makefile.in | 7 +++
dlls/dinput8/tests/device.c | 109 ++++++++++++++++++++++++++++++++++++++++
4 files changed, 118 insertions(+), 0 deletions(-)
diff --git a/configure b/configure
index 80f9d38..7b19dd8 100755
--- a/configure
+++ b/configure
@@ -15106,6 +15106,7 @@ wine_fn_config_dll devenum enable_devenum po
wine_fn_config_dll dinput enable_dinput implib,staticimplib
wine_fn_config_test dlls/dinput/tests dinput_test
wine_fn_config_dll dinput8 enable_dinput8 implib
+wine_fn_config_test dlls/dinput8/tests dinput8_test
wine_fn_config_dll dispdib.dll16 enable_win16
wine_fn_config_dll dispex enable_dispex
wine_fn_config_test dlls/dispex/tests dispex_test
diff --git a/configure.ac b/configure.ac
index 2069561..7637c33 100644
--- a/configure.ac
+++ b/configure.ac
@@ -2509,6 +2509,7 @@ WINE_CONFIG_DLL(devenum,,[po])
WINE_CONFIG_DLL(dinput,,[implib,staticimplib])
WINE_CONFIG_TEST(dlls/dinput/tests)
WINE_CONFIG_DLL(dinput8,,[implib])
+WINE_CONFIG_TEST(dlls/dinput8/tests)
WINE_CONFIG_DLL(dispdib.dll16,enable_win16)
WINE_CONFIG_DLL(dispex)
WINE_CONFIG_TEST(dlls/dispex/tests)
diff --git a/dlls/dinput8/tests/Makefile.in b/dlls/dinput8/tests/Makefile.in
new file mode 100644
index 0000000..604be6a
--- /dev/null
+++ b/dlls/dinput8/tests/Makefile.in
@@ -0,0 +1,7 @@
+TESTDLL = dinput8.dll
+IMPORTS = dinput ole32 user32
+
+C_SRCS = \
+ device.c
+
+ at MAKE_TEST_RULES@
diff --git a/dlls/dinput8/tests/device.c b/dlls/dinput8/tests/device.c
new file mode 100644
index 0000000..c18a83a
--- /dev/null
+++ b/dlls/dinput8/tests/device.c
@@ -0,0 +1,109 @@
+/*
+ * Copyright (c) 2011 Lucas Fialho Zawacki
+ * Copyright (c) 2006 Vitaliy Margolen
+ *
+ * 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
+ */
+
+#define DIRECTINPUT_VERSION 0x0800
+
+#define COBJMACROS
+#include <windows.h>
+
+#include "wine/test.h"
+#include "windef.h"
+#include "initguid.h"
+#include "dinput.h"
+
+static BOOL CALLBACK enum_by_semantics(
+ LPCDIDEVICEINSTANCE lpddi,
+ LPDIRECTINPUTDEVICE8 lpdid,
+ DWORD dwFlags,
+ DWORD dwRemaining,
+ LPVOID pvRef)
+{
+ return DIENUM_CONTINUE;
+}
+
+
+static void test_action_mapping(void)
+{
+ HRESULT hr;
+ HINSTANCE hinst = GetModuleHandle(NULL);
+ LPDIRECTINPUT8 pDI = NULL;
+ DIACTIONFORMAT af;
+ /* Dummy GUID */
+ const GUID ACTION_MAPPING_GUID = { 0x1, 0x2, 0x3, { 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xa, 0xb } };
+
+ DIACTION actionMapping[]=
+ {
+ /* axis */
+ { 0, 0x01008A01 /* DIAXIS_DRIVINGR_STEER */ , 0, { "Steer" } },
+
+ /* button */
+ { 1, 0x01000C01 /* DIBUTTON_DRIVINGR_SHIFTUP */ , 0, { "Upshift" } }
+ };
+
+ hr = CoCreateInstance(&CLSID_DirectInput8, 0, 1, &IID_IDirectInput8A, (LPVOID*)&pDI);
+ if (hr == DIERR_OLDDIRECTINPUTVERSION ||
+ hr == DIERR_BETADIRECTINPUTVERSION ||
+ hr == REGDB_E_CLASSNOTREG)
+ {
+ win_skip("ActionMapping requires dinput8\n");
+ return;
+ }
+ ok(SUCCEEDED(hr), "DirectInput8 Create failed: hr=%08x\n", hr);
+ if (FAILED(hr)) return;
+
+ hr = IDirectInput8_Initialize(pDI,hinst, DIRECTINPUT_VERSION);
+ if (hr == DIERR_OLDDIRECTINPUTVERSION || hr == DIERR_BETADIRECTINPUTVERSION)
+ {
+ win_skip("ActionMapping requires dinput8\n");
+ return;
+ }
+ ok(SUCCEEDED(hr), "DirectInput8 Initialize failed: hr=%08x\n", hr);
+ if (FAILED(hr)) return;
+
+ memset (&af, 0, sizeof(af));
+ af.dwSize = sizeof(af);
+ af.dwActionSize = sizeof(DIACTION);
+ af.dwDataSize = 4 * sizeof(actionMapping) / sizeof(actionMapping[0]);
+ af.dwNumActions = sizeof(actionMapping) / sizeof(actionMapping[0]);
+ af.rgoAction = actionMapping;
+ af.guidActionMap = ACTION_MAPPING_GUID;
+ af.dwGenre = 0x01000000; /* DIVIRTUAL_DRIVING_RACE */
+
+ hr = IDirectInput8_EnumDevicesBySemantics(pDI,0, &af,
+ enum_by_semantics, 0, 0);
+
+ ok(SUCCEEDED(hr), "EnumDevicesBySemantics failed: hr=%08x\n",hr);
+
+ /* The call fails with a zeroed GUID */
+ memset(&af.guidActionMap, 0, sizeof(GUID));
+ hr = IDirectInput8_EnumDevicesBySemantics(pDI,0, &af,
+ enum_by_semantics, 0, 0);
+
+ todo_wine ok(FAILED(hr), "EnumDevicesBySemantics succeeded with invalid GUID hr=%08x\n", hr);
+
+}
+
+START_TEST(device)
+{
+ CoInitialize(NULL);
+
+ test_action_mapping();
+
+ CoUninitialize();
+}
More information about the wine-cvs
mailing list