[PATCH 6/6] dinput/tests: Add some RacingWheel runtimeclass tests.

Rémi Bernon rbernon at codeweavers.com
Fri Apr 22 04:49:10 CDT 2022


Signed-off-by: Rémi Bernon <rbernon at codeweavers.com>
---
 dlls/dinput/tests/force_feedback.c | 36 +++++++++++++++++++++++++++++-
 1 file changed, 35 insertions(+), 1 deletion(-)

diff --git a/dlls/dinput/tests/force_feedback.c b/dlls/dinput/tests/force_feedback.c
index 094612d7140..a4588f7022d 100644
--- a/dlls/dinput/tests/force_feedback.c
+++ b/dlls/dinput/tests/force_feedback.c
@@ -5157,6 +5157,7 @@ static void test_windows_gaming_input(void)
     };
     static const WCHAR *force_feedback_motor = RuntimeClass_Windows_Gaming_Input_ForceFeedback_ForceFeedbackMotor;
     static const WCHAR *controller_class_name = RuntimeClass_Windows_Gaming_Input_RawGameController;
+    static const WCHAR *racing_wheel_class_name = RuntimeClass_Windows_Gaming_Input_RacingWheel;
 
     DIPROPGUIDANDPATH guid_path =
     {
@@ -5174,17 +5175,22 @@ static void test_windows_gaming_input(void)
     EventRegistrationToken controller_added_token;
     struct bool_async_handler bool_async_handler;
     IVectorView_ForceFeedbackMotor *motors_view;
+    IVectorView_RacingWheel *racing_wheels_view;
+    IRacingWheelStatics2 *racing_wheel_statics2;
+    IRacingWheelStatics *racing_wheel_statics;
     ForceFeedbackEffectAxes supported_axes;
     IAsyncOperation_boolean *bool_async;
     IRawGameController *raw_controller;
+    IGameController *game_controller;
     IDirectInputDevice8W *device;
     IForceFeedbackMotor *motor;
+    IRacingWheel *racing_wheel;
     BOOLEAN paused, enabled;
     IAsyncInfo *async_info;
+    DOUBLE gain;
     HSTRING str;
     HANDLE file;
     UINT32 size;
-    DOUBLE gain;
     HRESULT hr;
     DWORD ret;
     ULONG ref;
@@ -5248,6 +5254,34 @@ static void test_windows_gaming_input(void)
     ok( hr == S_OK, "GetAt returned %#lx\n", hr );
     IVectorView_RawGameController_Release( controllers_view );
 
+    hr = pWindowsCreateString( racing_wheel_class_name, wcslen( racing_wheel_class_name ), &str );
+    ok( hr == S_OK, "WindowsCreateString returned %#lx\n", hr );
+    hr = pRoGetActivationFactory( str, &IID_IRacingWheelStatics, (void **)&racing_wheel_statics );
+    ok( hr == S_OK, "RoGetActivationFactory returned %#lx\n", hr );
+    hr = pRoGetActivationFactory( str, &IID_IRacingWheelStatics2, (void **)&racing_wheel_statics2 );
+    ok( hr == S_OK, "RoGetActivationFactory returned %#lx\n", hr );
+    pWindowsDeleteString( str );
+
+    /* HID driving wheels aren't exposed as WGI gamepads on Windows */
+
+    hr = IRacingWheelStatics_get_RacingWheels( racing_wheel_statics, &racing_wheels_view );
+    ok( hr == S_OK, "get_RacingWheels returned %#lx\n", hr );
+    hr = IVectorView_RacingWheel_get_Size( racing_wheels_view, &size );
+    ok( hr == S_OK, "get_Size returned %#lx\n", hr );
+    todo_wine /* but Wine currently intentionally does */
+    ok( size == 0, "got size %u\n", size );
+    IVectorView_RacingWheel_Release( racing_wheels_view );
+    IRacingWheelStatics_Release( racing_wheel_statics );
+
+    hr = IRawGameController_QueryInterface( raw_controller, &IID_IGameController, (void **)&game_controller );
+    ok( hr == S_OK, "QueryInterface returned %#lx\n", hr );
+    hr = IRacingWheelStatics2_FromGameController( racing_wheel_statics2, game_controller, &racing_wheel );
+    ok( hr == S_OK, "FromGameController returned %#lx\n", hr );
+    todo_wine
+    ok( racing_wheel == NULL, "got racing_wheel %p\n", racing_wheel );
+    IGameController_Release( game_controller );
+    IRacingWheelStatics2_Release( racing_wheel_statics2 );
+
     set_hid_expect( file, expect_acquire, sizeof(expect_acquire) );
     hr = IRawGameController_get_ForceFeedbackMotors( raw_controller, &motors_view );
     todo_wine
-- 
2.35.1




More information about the wine-devel mailing list