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