[PATCH 1/2] ole32/tests: Add some tests for Reduce().

Nikolay Sivov nsivov at codeweavers.com
Thu Dec 19 08:05:54 CST 2019


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

diff --git a/dlls/ole32/tests/moniker.c b/dlls/ole32/tests/moniker.c
index b65c0115ca..e4d693b442 100644
--- a/dlls/ole32/tests/moniker.c
+++ b/dlls/ole32/tests/moniker.c
@@ -1531,12 +1531,11 @@ todo_wine_if(moniker_type == MKSYS_GENERICCOMPOSITE)
 
 static void test_class_moniker(void)
 {
+    IMoniker *moniker, *inverse, *reduced;
     HRESULT hr;
-    IMoniker *moniker;
     DWORD moniker_type;
     DWORD hash;
     IBindCtx *bindctx;
-    IMoniker *inverse;
     IUnknown *unknown;
     FILETIME filetime;
 
@@ -1597,8 +1596,6 @@ todo_wine
     ok_ole_success(hr, IMoniker_BindToStorage);
     IUnknown_Release(unknown);
 
-    IBindCtx_Release(bindctx);
-
     hr = IMoniker_Inverse(moniker, &inverse);
     ok(hr == S_OK, "Failed to get inverse, hr %#x.\n", hr);
     hr = IMoniker_IsSystemMoniker(inverse, &moniker_type);
@@ -1606,13 +1603,22 @@ todo_wine
     ok(moniker_type == MKSYS_ANTIMONIKER, "Unexpected moniker type %d.\n", moniker_type);
     IMoniker_Release(inverse);
 
+    /* Reduce() */
+    hr = IMoniker_Reduce(moniker, NULL, MKRREDUCE_ALL, NULL, &reduced);
+    ok(hr == MK_S_REDUCED_TO_SELF, "Unexpected hr %#x.\n", hr);
+    ok(reduced == moniker, "Unexpected moniker.\n");
+    IMoniker_Release(reduced);
+
+    IBindCtx_Release(bindctx);
+
     IMoniker_Release(moniker);
 }
 
 static void test_file_moniker(WCHAR* path)
 {
-    IMoniker *moniker1 = NULL, *moniker2 = NULL, *inverse;
+    IMoniker *moniker1 = NULL, *moniker2 = NULL, *inverse, *reduced;
     DWORD moniker_type;
+    IBindCtx *bind_ctx;
     IStream *stream;
     IUnknown *unk;
     HRESULT hr;
@@ -1654,6 +1660,21 @@ todo_wine
     hr = IMoniker_IsEqual(moniker1, moniker2);
     ok_ole_success(hr, IsEqual);
 
+    /* Reduce() */
+    hr = CreateBindCtx(0, &bind_ctx);
+    ok(hr == S_OK, "Failed to create bind context, hr %#x.\n", hr);
+
+    hr = IMoniker_Reduce(moniker1, NULL, MKRREDUCE_ALL, NULL, &reduced);
+todo_wine
+    ok(hr == E_INVALIDARG, "Unexpected hr %#x.\n", hr);
+
+    hr = IMoniker_Reduce(moniker1, bind_ctx, MKRREDUCE_ALL, NULL, &reduced);
+    ok(hr == MK_S_REDUCED_TO_SELF, "Unexpected hr %#x.\n", hr);
+    ok(reduced == moniker1, "Unexpected moniker.\n");
+    IMoniker_Release(reduced);
+
+    IBindCtx_Release(bind_ctx);
+
     IStream_Release(stream);
     if (moniker1) 
         IMoniker_Release(moniker1);
@@ -1761,7 +1782,7 @@ static void test_item_moniker(void)
         { L"%", L"A", 0x41 },
         { L"%", L"a", 0x41 },
     };
-    IMoniker *moniker, *moniker2;
+    IMoniker *moniker, *moniker2, *reduced;
     HRESULT hr;
     DWORD moniker_type, i;
     DWORD hash;
@@ -1919,6 +1940,12 @@ todo_wine
     ok(moniker_type == MKSYS_ANTIMONIKER, "Unexpected moniker type %d.\n", moniker_type);
     IMoniker_Release(inverse);
 
+    /* Reduce() */
+    hr = IMoniker_Reduce(moniker, NULL, MKRREDUCE_ALL, NULL, &reduced);
+    ok(hr == MK_S_REDUCED_TO_SELF, "Unexpected hr %#x.\n", hr);
+    ok(reduced == moniker, "Unexpected moniker.\n");
+    IMoniker_Release(reduced);
+
     IMoniker_Release(moniker);
 
     /* IsEqual */
@@ -1961,13 +1988,12 @@ static void stream_write_dword(IStream *stream, DWORD value)
 
 static void test_anti_moniker(void)
 {
-    IMoniker *moniker, *moniker2, *moniker3;
+    IMoniker *moniker, *moniker2, *moniker3, *inverse, *reduced;
     HRESULT hr;
     DWORD moniker_type;
     DWORD hash;
     IBindCtx *bindctx;
     FILETIME filetime;
-    IMoniker *inverse;
     IUnknown *unknown;
     static const WCHAR expected_display_name[] = { '\\','.','.',0 };
     IStream *stream;
@@ -2143,6 +2169,11 @@ todo_wine
 
     IStream_Release(stream);
 
+    hr = IMoniker_Reduce(moniker, NULL, MKRREDUCE_ALL, NULL, &reduced);
+    ok(hr == MK_S_REDUCED_TO_SELF, "Unexpected hr %#x.\n", hr);
+    ok(reduced == moniker, "Unexpected moniker.\n");
+    IMoniker_Release(reduced);
+
     IBindCtx_Release(bindctx);
     IMoniker_Release(moniker);
     IMoniker_Release(moniker2);
-- 
2.24.0




More information about the wine-devel mailing list