[KMTESTS:EX] Use stricter checks for the UUID returned from ExUuidCreate.
authorThomas Faber <thomas.faber@reactos.org>
Sat, 27 Jun 2020 07:27:33 +0000 (09:27 +0200)
committerThomas Faber <thomas.faber@reactos.org>
Sat, 27 Jun 2020 08:13:51 +0000 (10:13 +0200)
* Check the entire version field
* Check the variant field
* Accept RPC_NT_UUID_LOCAL_ONLY, which is sometimes returned by Windows
* Repeat the test to show that these things happen every time

Based on a patch by Serge Gautherie.

modules/rostests/kmtests/ntos_ex/ExUuid.c

index 2fb0bba..82bb27b 100644 (file)
@@ -14,8 +14,14 @@ START_TEST(ExUuid)
 {
     UUID Uuid;
     NTSTATUS Status;
+    ULONG i;
 
-    Status = ExUuidCreate(&Uuid);
-    ok(Status == STATUS_SUCCESS, "ExUuidCreate returned unexpected status: %lx\n", Status);
-    ok((Uuid.Data3 & 0x1000) == 0x1000, "Invalid UUID version: %x\n", (Uuid.Data3 & 0xF000));
+    for (i = 0; i < 1000; i++)
+    {
+        Status = ExUuidCreate(&Uuid);
+        ok(Status == STATUS_SUCCESS || Status == RPC_NT_UUID_LOCAL_ONLY,
+           "ExUuidCreate returned unexpected status: 0x%lx\n", Status);
+        ok((Uuid.Data3 & 0xF000) == 0x1000, "Invalid UUID version: 0x%x\n", (Uuid.Data3 & 0xF000));
+        ok((Uuid.Data4[0] & 0xC0) == 0x80, "Invalid UUID variant: 0x%x\n", (Uuid.Data4[0] & 0xF0));
+    }
 }