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