[PATCH 2/3] ole32/tests: Add some more tests for item moniker hashing.

Nikolay Sivov nsivov at codeweavers.com
Wed Dec 18 03:06:51 CST 2019


Signed-off-by: Nikolay Sivov <nsivov at codeweavers.com>
---
 dlls/ole32/tests/moniker.c | 37 ++++++++++++++++++++++++++++---------
 1 file changed, 28 insertions(+), 9 deletions(-)

diff --git a/dlls/ole32/tests/moniker.c b/dlls/ole32/tests/moniker.c
index 7e77847837..b65c0115ca 100644
--- a/dlls/ole32/tests/moniker.c
+++ b/dlls/ole32/tests/moniker.c
@@ -1747,6 +1747,20 @@ static void test_item_moniker(void)
         { NULL, L"Item1", NULL, L"Item2", S_FALSE },
         { NULL, L"Item1", NULL, L"ITEM1", S_OK },
     };
+    static const struct
+    {
+        const WCHAR *delim;
+        const WCHAR *item;
+        DWORD hash;
+    } hash_tests[] =
+    {
+        { L"!", L"Test", 0x73c },
+        { L"%", L"Test", 0x73c },
+        { L"%", L"TEST", 0x73c },
+        { L"%", L"T", 0x54 },
+        { L"%", L"A", 0x41 },
+        { L"%", L"a", 0x41 },
+    };
     IMoniker *moniker, *moniker2;
     HRESULT hr;
     DWORD moniker_type, i;
@@ -1851,6 +1865,20 @@ todo_wine
     IMoniker_Release(moniker2);
     IMoniker_Release(moniker);
 
+    /* Hashing */
+
+    for (i = 0; i < ARRAY_SIZE(hash_tests); ++i)
+    {
+        hr = CreateItemMoniker(hash_tests[i].delim, hash_tests[i].item, &moniker);
+        ok(hr == S_OK, "Failed to create a moniker, hr %#x.\n", hr);
+
+        hr = IMoniker_Hash(moniker, &hash);
+        ok(hr == S_OK, "Failed to get hash value, hr %#x.\n", hr);
+        ok(hash == hash_tests[i].hash, "%d: unexpected hash value %#x.\n", i, hash);
+
+        IMoniker_Release(moniker);
+    }
+
     hr = CreateItemMoniker(wszDelimiter, wszObjectName, &moniker);
     ok_ole_success(hr, CreateItemMoniker);
 
@@ -1860,15 +1888,6 @@ todo_wine
         expected_item_moniker_comparison_data, sizeof(expected_item_moniker_comparison_data),
         54, expected_display_name);
 
-    /* Hashing */
-
-    hr = IMoniker_Hash(moniker, &hash);
-    ok_ole_success(hr, IMoniker_Hash);
-
-    ok(hash == 0x73c,
-        "Hash value != 0x73c, instead was 0x%08x\n",
-        hash);
-
     /* IsSystemMoniker test */
 
     hr = IMoniker_IsSystemMoniker(moniker, &moniker_type);
-- 
2.24.0




More information about the wine-devel mailing list