Arkadiusz Hiler : dinput/tests: Test GetObjectInfo() with three sliders and a proper format.

Alexandre Julliard julliard at winehq.org
Mon Jul 25 16:19:30 CDT 2022


Module: wine
Branch: master
Commit: 7fd01cf7dd1033410373ae738d907e33fcc6523b
URL:    https://gitlab.winehq.org/wine/wine/-/commit/7fd01cf7dd1033410373ae738d907e33fcc6523b

Author: Arkadiusz Hiler <ahiler at codeweavers.com>
Date:   Fri Jul 22 14:57:01 2022 +0300

dinput/tests: Test GetObjectInfo() with three sliders and a proper format.

---

 dlls/dinput/tests/joystick8.c | 38 ++++++++++++++++++++++++++++++++++++++
 1 file changed, 38 insertions(+)

diff --git a/dlls/dinput/tests/joystick8.c b/dlls/dinput/tests/joystick8.c
index cedf362d23e..1c6496790e6 100644
--- a/dlls/dinput/tests/joystick8.c
+++ b/dlls/dinput/tests/joystick8.c
@@ -2596,6 +2596,28 @@ static BOOL test_device_types( DWORD version )
     return success;
 }
 
+struct three_sliders_state
+{
+    LONG slider[3];
+};
+
+static const DIOBJECTDATAFORMAT df_three_sliders[] =
+{
+    {&GUID_Slider, FIELD_OFFSET(struct three_sliders_state, slider[0]), DIDFT_OPTIONAL|DIDFT_AXIS|DIDFT_ANYINSTANCE, DIDOI_ASPECTPOSITION},
+    {&GUID_Slider, FIELD_OFFSET(struct three_sliders_state, slider[1]), DIDFT_OPTIONAL|DIDFT_AXIS|DIDFT_ANYINSTANCE, DIDOI_ASPECTPOSITION},
+    {&GUID_Slider, FIELD_OFFSET(struct three_sliders_state, slider[2]), DIDFT_OPTIONAL|DIDFT_AXIS|DIDFT_ANYINSTANCE, DIDOI_ASPECTPOSITION},
+};
+
+static const DIDATAFORMAT c_df_three_sliders =
+{
+    sizeof(DIDATAFORMAT),
+    sizeof(DIOBJECTDATAFORMAT),
+    DIDF_ABSAXIS,
+    sizeof(struct three_sliders_state),
+    ARRAY_SIZE(df_three_sliders),
+    (DIOBJECTDATAFORMAT *)df_three_sliders,
+};
+
 static void test_many_axes_joystick(void)
 {
 #include "psh_hid_macros.h"
@@ -3070,6 +3092,22 @@ static void test_many_axes_joystick(void)
     ok( hr == DI_OK, "GetObjectInfo returned: %#lx\n", hr );
     check_object( &objinst, &expect_objects[16], &todo_flags );
 
+    /* make sure that we handle three sliders correctly when the format allows */
+    hr = IDirectInputDevice8_SetDataFormat( device, &c_df_three_sliders );
+    ok( hr == DI_OK, "SetDataFormat returned: %#lx\n", hr );
+
+    hr = IDirectInputDevice8_GetObjectInfo( device, &objinst, offsetof(struct three_sliders_state, slider[0]), DIPH_BYOFFSET );
+    ok( hr == DI_OK, "GetObjectInfo returned: %#lx\n", hr );
+    check_object( &objinst, &expect_objects[6], NULL );
+
+    hr = IDirectInputDevice8_GetObjectInfo( device, &objinst, offsetof(struct three_sliders_state, slider[1]), DIPH_BYOFFSET );
+    ok( hr == DI_OK, "GetObjectInfo returned: %#lx\n", hr );
+    check_object( &objinst, &expect_objects[8], NULL );
+
+    hr = IDirectInputDevice8_GetObjectInfo( device, &objinst, offsetof(struct three_sliders_state, slider[2]), DIPH_BYOFFSET );
+    ok( hr == DI_OK, "GetObjectInfo returned: %#lx\n", hr );
+    check_object( &objinst, &expect_objects[9], NULL );
+
     ref = IDirectInputDevice8_Release( device );
     ok( ref == 0, "Release returned %ld\n", ref );
 




More information about the wine-cvs mailing list