[PATCH 5/5] ntoskrnl.exe/tests: Add some HidP_InitializeReportForID tests.

Rémi Bernon rbernon at codeweavers.com
Thu Jun 10 03:06:28 CDT 2021


Signed-off-by: Rémi Bernon <rbernon at codeweavers.com>
---
 dlls/ntoskrnl.exe/tests/ntoskrnl.c | 19 ++++++++++++++++++-
 1 file changed, 18 insertions(+), 1 deletion(-)

diff --git a/dlls/ntoskrnl.exe/tests/ntoskrnl.c b/dlls/ntoskrnl.exe/tests/ntoskrnl.c
index 6a73493aa39..ff73e8eae18 100644
--- a/dlls/ntoskrnl.exe/tests/ntoskrnl.c
+++ b/dlls/ntoskrnl.exe/tests/ntoskrnl.c
@@ -1720,8 +1720,8 @@ static void test_hidp(HANDLE file)
     PHIDP_PREPARSED_DATA preparsed_data;
     HIDP_BUTTON_CAPS button_caps[16];
     HIDP_VALUE_CAPS value_caps[16];
+    char buffer[200], report[200];
     DWORD collection_count;
-    char buffer[200];
     NTSTATUS status;
     HIDP_CAPS caps;
     unsigned int i;
@@ -1952,6 +1952,23 @@ static void test_hidp(HANDLE file)
     ok(status == HIDP_STATUS_USAGE_NOT_FOUND, "HidP_GetSpecificValueCaps returned %#x\n", status);
     ok(count == 0, "HidP_GetSpecificValueCaps returned count %d, expected %d\n", count, 0);
 
+    status = HidP_InitializeReportForID(HidP_Input, 0, (PHIDP_PREPARSED_DATA)buffer, report, sizeof(report));
+    ok(status == HIDP_STATUS_INVALID_PREPARSED_DATA, "HidP_InitializeReportForID returned %#x\n", status);
+    status = HidP_InitializeReportForID(HidP_Feature + 1, 0, preparsed_data, report, sizeof(report));
+    ok(status == HIDP_STATUS_INVALID_REPORT_TYPE, "HidP_InitializeReportForID returned %#x\n", status);
+    status = HidP_InitializeReportForID(HidP_Input, 0, preparsed_data, report, sizeof(report));
+    ok(status == HIDP_STATUS_INVALID_REPORT_LENGTH, "HidP_InitializeReportForID returned %#x\n", status);
+    status = HidP_InitializeReportForID(HidP_Input, 0, preparsed_data, report, caps.InputReportByteLength + 1);
+    ok(status == HIDP_STATUS_INVALID_REPORT_LENGTH, "HidP_InitializeReportForID returned %#x\n", status);
+
+    memset(report, 0xcd, sizeof(report));
+    status = HidP_InitializeReportForID(HidP_Input, 0, preparsed_data, report, caps.InputReportByteLength);
+    ok(status == HIDP_STATUS_SUCCESS, "HidP_InitializeReportForID returned %#x\n", status);
+
+    memset(buffer, 0xcd, sizeof(buffer));
+    memset(buffer, 0, caps.InputReportByteLength);
+    ok(!memcmp(buffer, report, sizeof(buffer)), "unexpected report data\n");
+
     HidD_FreePreparsedData(preparsed_data);
     CloseHandle(file);
 }
-- 
2.31.0




More information about the wine-devel mailing list