dinput8/tests: Tests for creation and initialization of DI8 Interface and simple cases of EnumDevicesBySemantics. (try 3)
Lucas Fialho Zawacki
lfzawacki at gmail.com
Fri Apr 29 17:29:19 CDT 2011
---
configure.ac | 1 +
dlls/dinput8/tests/Makefile.in | 7 +++
dlls/dinput8/tests/device.c | 116 ++++++++++++++++++++++++++++++++++++++++
3 files changed, 124 insertions(+), 0 deletions(-)
create mode 100644 dlls/dinput8/tests/Makefile.in
create mode 100644 dlls/dinput8/tests/device.c
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..cfc388c
--- /dev/null
+++ b/dlls/dinput8/tests/Makefile.in
@@ -0,0 +1,7 @@
+TESTDLL = dinput8.dll
+IMPORTS = dinput ole32 version 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..e06e9c1
--- /dev/null
+++ b/dlls/dinput8/tests/device.c
@@ -0,0 +1,116 @@
+/*
+ * 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);
+
+}
+
+static void device_tests(void)
+{
+
+}
+
+
+START_TEST(device)
+{
+ CoInitialize(NULL);
+
+ device_tests();
+ test_action_mapping();
+
+ CoUninitialize();
+}
--
1.7.0.4
More information about the wine-patches
mailing list