Nikolay Sivov : ole32/tests: Add tests for system moniker identification queries.

Alexandre Julliard julliard at winehq.org
Tue Dec 17 15:58:19 CST 2019


Module: wine
Branch: master
Commit: 0c9205ad1d3821bbcf3d7a4fd9c7b2b369977953
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=0c9205ad1d3821bbcf3d7a4fd9c7b2b369977953

Author: Nikolay Sivov <nsivov at codeweavers.com>
Date:   Tue Dec 17 10:51:55 2019 +0300

ole32/tests: Add tests for system moniker identification queries.

Signed-off-by: Nikolay Sivov <nsivov at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/ole32/tests/moniker.c | 64 +++++++++++++++++++++++++++++++++++++++++++---
 1 file changed, 61 insertions(+), 3 deletions(-)

diff --git a/dlls/ole32/tests/moniker.c b/dlls/ole32/tests/moniker.c
index d911ce57e9..4fec233a57 100644
--- a/dlls/ole32/tests/moniker.c
+++ b/dlls/ole32/tests/moniker.c
@@ -31,6 +31,7 @@
 #include "ocidl.h"
 #include "comcat.h"
 #include "olectl.h"
+#include "initguid.h"
 
 #include "wine/test.h"
 
@@ -62,6 +63,13 @@ static const CLSID CLSID_TestMoniker =
     {0xb9, 0x3e, 0x2f, 0xf9, 0xc8, 0x32, 0x23, 0xd7}
 };
 
+DEFINE_OLEGUID(CLSID_FileMoniker,      0x303, 0, 0);
+DEFINE_OLEGUID(CLSID_ItemMoniker,      0x304, 0, 0);
+DEFINE_OLEGUID(CLSID_AntiMoniker,      0x305, 0, 0);
+DEFINE_OLEGUID(CLSID_CompositeMoniker, 0x309, 0, 0);
+DEFINE_OLEGUID(CLSID_ClassMoniker,     0x31a, 0, 0);
+DEFINE_OLEGUID(CLSID_PointerMoniker,   0x306, 0, 0);
+
 static LONG cLocks;
 
 static void LockModule(void)
@@ -1543,7 +1551,15 @@ static void test_class_moniker(void)
 
     hr = CreateClassMoniker(&CLSID_StdComponentCategoriesMgr, &moniker);
     ok_ole_success(hr, CreateClassMoniker);
-    if (!moniker) return;
+
+    hr = IMoniker_QueryInterface(moniker, &CLSID_ClassMoniker, (void **)&unknown);
+todo_wine
+    ok(hr == S_OK, "Unexpected hr %#x.\n", hr);
+    if (SUCCEEDED(hr))
+    {
+        ok(unknown == (IUnknown *)moniker, "Unexpected interface.\n");
+        IUnknown_Release(unknown);
+    }
 
     test_moniker("class moniker", moniker, 
         expected_class_moniker_marshal_data, sizeof(expected_class_moniker_marshal_data),
@@ -1603,11 +1619,21 @@ static void test_file_moniker(WCHAR* path)
 {
     IStream *stream;
     IMoniker *moniker1 = NULL, *moniker2 = NULL;
+    IUnknown *unk;
     HRESULT hr;
 
     hr = CreateFileMoniker(path, &moniker1);
     ok_ole_success(hr, CreateFileMoniker); 
 
+    hr = IMoniker_QueryInterface(moniker1, &CLSID_FileMoniker, (void **)&unk);
+todo_wine
+    ok(hr == S_OK, "Unexpected hr %#x.\n", hr);
+    if (SUCCEEDED(hr))
+    {
+        ok(unk == (IUnknown *)moniker1, "Unexpected interface.\n");
+        IUnknown_Release(unk);
+    }
+
     hr = CreateStreamOnHGlobal(NULL, TRUE, &stream);
     ok_ole_success(hr, CreateStreamOnHGlobal);
 
@@ -1719,6 +1745,15 @@ static void test_item_moniker(void)
     hr = CreateItemMoniker(NULL, wszObjectName, &moniker);
     ok(hr == S_OK, "Failed to create item moniker, hr %#x.\n", hr);
 
+    hr = IMoniker_QueryInterface(moniker, &CLSID_ItemMoniker, (void **)&unknown);
+todo_wine
+    ok(hr == S_OK, "Unexpected hr %#x.\n", hr);
+    if (SUCCEEDED(hr))
+    {
+        ok(unknown == (IUnknown *)moniker, "Unexpected interface.\n");
+        IUnknown_Release(unknown);
+    }
+
     test_moniker("item moniker 2", moniker,
         expected_item_moniker_marshal_data2, sizeof(expected_item_moniker_marshal_data2),
         expected_item_moniker_saved_data2, sizeof(expected_item_moniker_saved_data2),
@@ -1860,7 +1895,15 @@ static void test_anti_moniker(void)
 
     hr = CreateAntiMoniker(&moniker);
     ok_ole_success(hr, CreateAntiMoniker);
-    if (!moniker) return;
+
+    hr = IMoniker_QueryInterface(moniker, &CLSID_AntiMoniker, (void **)&unknown);
+todo_wine
+    ok(hr == S_OK, "Unexpected hr %#x.\n", hr);
+    if (SUCCEEDED(hr))
+    {
+        ok(unknown == (IUnknown *)moniker, "Unexpected interface.\n");
+        IUnknown_Release(unknown);
+    }
 
     test_moniker("anti moniker", moniker, 
         expected_anti_moniker_marshal_data, sizeof(expected_anti_moniker_marshal_data),
@@ -1932,6 +1975,13 @@ static void test_generic_composite_moniker(void)
     hr = CreateGenericComposite(moniker1, moniker2, &moniker);
     ok_ole_success(hr, CreateGenericComposite);
 
+    /* Generic composite is special, as it does not addref in this case. */
+    hr = IMoniker_QueryInterface(moniker, &CLSID_CompositeMoniker, (void **)&unknown);
+todo_wine
+    ok(hr == S_OK, "Unexpected hr %#x.\n", hr);
+    if (SUCCEEDED(hr))
+        ok(unknown == (IUnknown *)moniker, "Unexpected interface.\n");
+
     test_moniker("generic composite moniker", moniker, 
         expected_gc_moniker_marshal_data, sizeof(expected_gc_moniker_marshal_data),
         expected_gc_moniker_saved_data, sizeof(expected_gc_moniker_saved_data),
@@ -2007,7 +2057,15 @@ static void test_pointer_moniker(void)
 
     hr = CreatePointerMoniker((IUnknown *)&Test_ClassFactory, &moniker);
     ok_ole_success(hr, CreatePointerMoniker);
-    if (!moniker) return;
+
+    hr = IMoniker_QueryInterface(moniker, &CLSID_PointerMoniker, (void **)&unknown);
+todo_wine
+    ok(hr == S_OK, "Unexpected hr %#x.\n", hr);
+    if (SUCCEEDED(hr))
+    {
+        ok(unknown == (IUnknown *)moniker, "Unexpected interface.\n");
+        IUnknown_Release(unknown);
+    }
 
     ok_more_than_one_lock();
 




More information about the wine-cvs mailing list