Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-fonts
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Aleksandr Isakov
wine-fonts
Commits
cda4596c
Commit
cda4596c
authored
Jun 02, 2022
by
Rémi Bernon
Committed by
Alexandre Julliard
Jun 10, 2022
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
dinput/tests: Run keyboard info tests for every dinput version.
Signed-off-by:
Rémi Bernon
<
rbernon@codeweavers.com
>
parent
74b9bd67
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
34 additions
and
118 deletions
+34
-118
device8.c
dlls/dinput/tests/device8.c
+34
-17
keyboard.c
dlls/dinput/tests/keyboard.c
+0
-101
No files found.
dlls/dinput/tests/device8.c
View file @
cda4596c
...
...
@@ -2047,13 +2047,14 @@ static void test_sys_mouse( DWORD version )
localized
=
old_localized
;
}
static
void
test_
keyboard_info
(
void
)
static
void
test_
sys_keyboard
(
DWORD
version
)
{
static
const
DIDEVCAPS
expect_caps
=
const
DIDEVCAPS
expect_caps
=
{
.
dwSize
=
sizeof
(
DIDEVCAPS
),
.
dwFlags
=
DIDC_ATTACHED
|
DIDC_EMULATED
,
.
dwDevType
=
(
DI8DEVTYPEKEYBOARD_PCENH
<<
8
)
|
DI8DEVTYPE_KEYBOARD
,
.
dwDevType
=
version
<
0x800
?
(
DIDEVTYPEKEYBOARD_PCENH
<<
8
)
|
DIDEVTYPE_KEYBOARD
:
(
DI8DEVTYPEKEYBOARD_PCENH
<<
8
)
|
DI8DEVTYPE_KEYBOARD
,
.
dwButtons
=
128
,
};
const
DIDEVICEINSTANCEW
expect_devinst
=
...
...
@@ -2061,7 +2062,8 @@ static void test_keyboard_info(void)
.
dwSize
=
sizeof
(
DIDEVICEINSTANCEW
),
.
guidInstance
=
GUID_SysKeyboard
,
.
guidProduct
=
GUID_SysKeyboard
,
.
dwDevType
=
(
DI8DEVTYPEKEYBOARD_PCENH
<<
8
)
|
DI8DEVTYPE_KEYBOARD
,
.
dwDevType
=
version
<
0x800
?
(
DIDEVTYPEKEYBOARD_PCENH
<<
8
)
|
DIDEVTYPE_KEYBOARD
:
(
DI8DEVTYPEKEYBOARD_PCENH
<<
8
)
|
DI8DEVTYPE_KEYBOARD
,
.
tszInstanceName
=
L"Keyboard"
,
.
tszProductName
=
L"Keyboard"
,
.
guidFFDriver
=
GUID_NULL
,
...
...
@@ -2151,21 +2153,19 @@ static void test_keyboard_info(void)
};
DIDEVICEOBJECTINSTANCEW
objinst
=
{
0
};
DIDEVICEINSTANCEW
devinst
=
{
0
};
BOOL
old_localized
=
localized
;
IDirectInputDevice8W
*
device
;
DIDEVCAPS
caps
=
{
0
};
IDirectInput8W
*
di
;
ULONG
res
,
ref
;
HRESULT
hr
;
GUID
guid
;
localized
=
TRUE
;
/* Skip name tests, Wine sometimes succeeds depending on the host key names */
if
(
FAILED
(
create_dinput_device
(
version
,
&
GUID_SysKeyboard
,
&
device
)))
return
;
hr
=
DirectInput8Create
(
instance
,
DIRECTINPUT_VERSION
,
&
IID_IDirectInput8W
,
(
void
**
)
&
di
,
NULL
);
ok
(
hr
==
DI_OK
,
"DirectInput8Create returned %#lx
\n
"
,
hr
);
hr
=
IDirectInput8_CreateDevice
(
di
,
&
GUID_SysKeyboard
,
&
device
,
NULL
);
ok
(
hr
==
DI_OK
,
"CreateDevice returned %#lx
\n
"
,
hr
);
localized
=
TRUE
;
/* Skip name tests, Wine sometimes succeeds depending on the host key names */
winetest_push_context
(
"%#lx"
,
version
);
hr
=
IDirectInputDevice8_Initialize
(
device
,
instance
,
DIRECTINPUT_VERSION
,
&
GUID_SysKeyboardEm
);
hr
=
IDirectInputDevice8_Initialize
(
device
,
instance
,
version
,
&
GUID_SysKeyboardEm
);
ok
(
hr
==
DI_OK
,
"Initialize returned %#lx
\n
"
,
hr
);
guid
=
GUID_SysKeyboardEm
;
memset
(
&
devinst
,
0
,
sizeof
(
devinst
)
);
...
...
@@ -2175,7 +2175,7 @@ static void test_keyboard_info(void)
ok
(
IsEqualGUID
(
&
guid
,
&
GUID_SysKeyboardEm
),
"got %s expected %s
\n
"
,
debugstr_guid
(
&
guid
),
debugstr_guid
(
&
GUID_SysKeyboardEm
)
);
hr
=
IDirectInputDevice8_Initialize
(
device
,
instance
,
DIRECTINPUT_VERSION
,
&
GUID_SysKeyboard
);
hr
=
IDirectInputDevice8_Initialize
(
device
,
instance
,
version
,
&
GUID_SysKeyboard
);
ok
(
hr
==
DI_OK
,
"Initialize returned %#lx
\n
"
,
hr
);
memset
(
&
devinst
,
0
,
sizeof
(
devinst
)
);
...
...
@@ -2192,6 +2192,15 @@ static void test_keyboard_info(void)
check_member
(
devinst
,
expect_devinst
,
"%04x"
,
wUsagePage
);
check_member
(
devinst
,
expect_devinst
,
"%04x"
,
wUsage
);
devinst
.
dwSize
=
sizeof
(
DIDEVICEINSTANCE_DX3W
);
hr
=
IDirectInputDevice8_GetDeviceInfo
(
device
,
&
devinst
);
ok
(
hr
==
DI_OK
,
"GetDeviceInfo returned %#lx
\n
"
,
hr
);
check_member_guid
(
devinst
,
expect_devinst
,
guidInstance
);
check_member_guid
(
devinst
,
expect_devinst
,
guidProduct
);
check_member
(
devinst
,
expect_devinst
,
"%#lx"
,
dwDevType
);
if
(
!
localized
)
check_member_wstr
(
devinst
,
expect_devinst
,
tszInstanceName
);
if
(
!
localized
)
todo_wine
check_member_wstr
(
devinst
,
expect_devinst
,
tszProductName
);
caps
.
dwSize
=
sizeof
(
DIDEVCAPS
);
hr
=
IDirectInputDevice8_GetCapabilities
(
device
,
&
caps
);
ok
(
hr
==
DI_OK
,
"GetCapabilities returned %#lx
\n
"
,
hr
);
...
...
@@ -2270,8 +2279,13 @@ static void test_keyboard_info(void)
hr
=
IDirectInputDevice8_GetProperty
(
device
,
DIPROP_TYPENAME
,
&
prop_string
.
diph
);
ok
(
hr
==
DIERR_UNSUPPORTED
,
"GetProperty DIPROP_TYPENAME returned %#lx
\n
"
,
hr
);
hr
=
IDirectInputDevice8_GetProperty
(
device
,
DIPROP_USERNAME
,
&
prop_string
.
diph
);
ok
(
hr
==
S_FALSE
,
"GetProperty DIPROP_USERNAME returned %#lx
\n
"
,
hr
);
ok
(
!
wcscmp
(
prop_string
.
wsz
,
L""
),
"got user %s
\n
"
,
debugstr_w
(
prop_string
.
wsz
)
);
if
(
version
<
0x0800
)
ok
(
hr
==
DIERR_UNSUPPORTED
,
"GetProperty DIPROP_USERNAME returned %#lx
\n
"
,
hr
);
else
{
ok
(
hr
==
DI_NOEFFECT
,
"GetProperty DIPROP_USERNAME returned %#lx
\n
"
,
hr
);
ok
(
!
wcscmp
(
prop_string
.
wsz
,
L""
),
"got user %s
\n
"
,
debugstr_w
(
prop_string
.
wsz
)
);
}
hr
=
IDirectInputDevice8_GetProperty
(
device
,
DIPROP_JOYSTICKID
,
&
prop_dword
.
diph
);
ok
(
hr
==
DIERR_UNSUPPORTED
,
"GetProperty DIPROP_VIDPID returned %#lx
\n
"
,
hr
);
...
...
@@ -2377,8 +2391,8 @@ static void test_keyboard_info(void)
ref
=
IDirectInputDevice8_Release
(
device
);
ok
(
ref
==
0
,
"Release returned %ld
\n
"
,
ref
);
ref
=
IDirectInput8_Release
(
di
);
ok
(
ref
==
0
,
"Release returned %ld
\n
"
,
ref
)
;
winetest_pop_context
(
);
localized
=
old_localized
;
}
START_TEST
(
device8
)
...
...
@@ -2397,7 +2411,10 @@ START_TEST(device8)
test_sys_mouse
(
0x700
);
test_sys_mouse
(
0x800
);
test_keyboard_info
();
test_sys_keyboard
(
0x500
);
test_sys_keyboard
(
0x700
);
test_sys_keyboard
(
0x800
);
test_action_mapping
();
test_save_settings
();
test_mouse_keyboard
();
...
...
dlls/dinput/tests/keyboard.c
View file @
cda4596c
...
...
@@ -251,75 +251,6 @@ static void test_set_coop(IDirectInputA *pDI, HWND hwnd)
if
(
pKeyboard
)
IUnknown_Release
(
pKeyboard
);
}
static
void
test_get_prop
(
IDirectInputA
*
pDI
,
HWND
hwnd
)
{
HRESULT
hr
;
IDirectInputDeviceA
*
pKeyboard
=
NULL
;
DIPROPRANGE
diprg
;
DIPROPDWORD
vidpid
;
hr
=
IDirectInput_CreateDevice
(
pDI
,
&
GUID_SysKeyboard
,
&
pKeyboard
,
NULL
);
ok
(
SUCCEEDED
(
hr
),
"IDirectInput_CreateDevice() failed: %#lx
\n
"
,
hr
);
if
(
FAILED
(
hr
))
return
;
memset
(
&
diprg
,
0
,
sizeof
(
diprg
));
diprg
.
diph
.
dwSize
=
sizeof
(
DIPROPRANGE
);
diprg
.
diph
.
dwHeaderSize
=
sizeof
(
DIPROPHEADER
);
diprg
.
diph
.
dwHow
=
DIPH_DEVICE
;
diprg
.
diph
.
dwObj
=
0
;
hr
=
IDirectInputDevice_GetProperty
(
pKeyboard
,
DIPROP_RANGE
,
&
diprg
.
diph
);
ok
(
hr
==
DIERR_UNSUPPORTED
,
"IDirectInputDevice_GetProperty() did not return DIPROP_RANGE but: %#lx
\n
"
,
hr
);
memset
(
&
vidpid
,
0
,
sizeof
(
vidpid
));
vidpid
.
diph
.
dwSize
=
sizeof
(
DIPROPDWORD
);
vidpid
.
diph
.
dwHeaderSize
=
sizeof
(
DIPROPHEADER
);
vidpid
.
diph
.
dwHow
=
DIPH_DEVICE
;
vidpid
.
diph
.
dwObj
=
0
;
hr
=
IDirectInputDevice_GetProperty
(
pKeyboard
,
DIPROP_VIDPID
,
&
vidpid
.
diph
);
ok
(
hr
==
DIERR_UNSUPPORTED
,
"got %#lx
\n
"
,
hr
);
IUnknown_Release
(
pKeyboard
);
}
static
void
test_capabilities
(
IDirectInputA
*
pDI
,
HWND
hwnd
)
{
HRESULT
hr
;
IDirectInputDeviceA
*
pKeyboard
=
NULL
;
DIDEVCAPS
caps
;
int
kbd_type
,
kbd_subtype
,
dev_subtype
;
hr
=
IDirectInput_CreateDevice
(
pDI
,
&
GUID_SysKeyboard
,
&
pKeyboard
,
NULL
);
ok
(
SUCCEEDED
(
hr
),
"IDirectInput_CreateDevice() failed: %#lx
\n
"
,
hr
);
if
(
FAILED
(
hr
))
return
;
caps
.
dwSize
=
sizeof
(
caps
);
hr
=
IDirectInputDevice_GetCapabilities
(
pKeyboard
,
&
caps
);
ok
(
SUCCEEDED
(
hr
),
"GetCapabilities failed: 0x%#lx
\n
"
,
hr
);
ok
(
caps
.
dwFlags
&
DIDC_ATTACHED
,
"GetCapabilities dwFlags: 0x%#lx
\n
"
,
caps
.
dwFlags
);
ok
(
GET_DIDEVICE_TYPE
(
caps
.
dwDevType
)
==
DIDEVTYPE_KEYBOARD
,
"GetCapabilities invalid device type for dwDevType: 0x%#lx
\n
"
,
caps
.
dwDevType
);
kbd_type
=
GetKeyboardType
(
0
);
kbd_subtype
=
GetKeyboardType
(
1
);
dev_subtype
=
GET_DIDEVICE_SUBTYPE
(
caps
.
dwDevType
);
if
(
kbd_type
==
4
||
(
kbd_type
==
7
&&
kbd_subtype
==
0
))
ok
(
dev_subtype
==
DIDEVTYPEKEYBOARD_PCENH
,
"GetCapabilities invalid device subtype for dwDevType: 0x%#lx (%04x:%04x)
\n
"
,
caps
.
dwDevType
,
kbd_type
,
kbd_subtype
);
else
if
(
kbd_type
==
7
&&
kbd_subtype
==
2
)
ok
(
dev_subtype
==
DIDEVTYPEKEYBOARD_JAPAN106
,
"GetCapabilities invalid device subtype for dwDevType: 0x%#lx (%04x:%04x)
\n
"
,
caps
.
dwDevType
,
kbd_type
,
kbd_subtype
);
else
ok
(
dev_subtype
!=
DIDEVTYPEKEYBOARD_UNKNOWN
,
"GetCapabilities invalid device subtype for dwDevType: 0x%#lx (%04x:%04x)
\n
"
,
caps
.
dwDevType
,
kbd_type
,
kbd_subtype
);
IUnknown_Release
(
pKeyboard
);
}
static
void
test_dik_codes
(
IDirectInputA
*
dI
,
HWND
hwnd
,
LANGID
langid
)
{
static
const
struct
key2dik
...
...
@@ -478,35 +409,6 @@ fail:
IUnknown_Release
(
device
);
}
static
void
test_GetDeviceInfo
(
IDirectInputA
*
pDI
)
{
HRESULT
hr
;
IDirectInputDeviceA
*
pKey
=
NULL
;
DIDEVICEINSTANCEA
instA
;
DIDEVICEINSTANCE_DX3A
inst3A
;
hr
=
IDirectInput_CreateDevice
(
pDI
,
&
GUID_SysKeyboard
,
&
pKey
,
NULL
);
ok
(
SUCCEEDED
(
hr
),
"IDirectInput_CreateDevice() failed: %#lx
\n
"
,
hr
);
if
(
FAILED
(
hr
))
return
;
instA
.
dwSize
=
sizeof
(
instA
);
hr
=
IDirectInputDevice_GetDeviceInfo
(
pKey
,
&
instA
);
ok
(
SUCCEEDED
(
hr
),
"got %#lx
\n
"
,
hr
);
inst3A
.
dwSize
=
sizeof
(
inst3A
);
hr
=
IDirectInputDevice_GetDeviceInfo
(
pKey
,
(
DIDEVICEINSTANCEA
*
)
&
inst3A
);
ok
(
SUCCEEDED
(
hr
),
"got %#lx
\n
"
,
hr
);
ok
(
instA
.
dwSize
!=
inst3A
.
dwSize
,
"got %ld, %ld
\n
"
,
instA
.
dwSize
,
inst3A
.
dwSize
);
ok
(
IsEqualGUID
(
&
instA
.
guidInstance
,
&
inst3A
.
guidInstance
),
"got %s, %s
\n
"
,
wine_dbgstr_guid
(
&
instA
.
guidInstance
),
wine_dbgstr_guid
(
&
inst3A
.
guidInstance
)
);
ok
(
IsEqualGUID
(
&
instA
.
guidProduct
,
&
inst3A
.
guidProduct
),
"got %s, %s
\n
"
,
wine_dbgstr_guid
(
&
instA
.
guidProduct
),
wine_dbgstr_guid
(
&
inst3A
.
guidProduct
)
);
ok
(
instA
.
dwDevType
==
inst3A
.
dwDevType
,
"got %ld, %ld
\n
"
,
instA
.
dwDevType
,
inst3A
.
dwDevType
);
IUnknown_Release
(
pKey
);
}
static
void
keyboard_tests
(
DWORD
version
)
{
HRESULT
hr
;
...
...
@@ -534,9 +436,6 @@ static void keyboard_tests(DWORD version)
acquire_tests
(
pDI
,
hwnd
);
test_set_coop
(
pDI
,
hwnd
);
test_get_prop
(
pDI
,
hwnd
);
test_capabilities
(
pDI
,
hwnd
);
test_GetDeviceInfo
(
pDI
);
test_dik_codes
(
pDI
,
hwnd
,
MAKELANGID
(
LANG_ENGLISH
,
SUBLANG_DEFAULT
));
test_dik_codes
(
pDI
,
hwnd
,
MAKELANGID
(
LANG_FRENCH
,
SUBLANG_FRENCH
));
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment