Signed-off-by: Nikolay Sivov nsivov@codeweavers.com --- dlls/ole32/tests/moniker.c | 96 +++++++++++++++++++++++++++++++++++++- 1 file changed, 94 insertions(+), 2 deletions(-)
diff --git a/dlls/ole32/tests/moniker.c b/dlls/ole32/tests/moniker.c index e4d693b442..9806777698 100644 --- a/dlls/ole32/tests/moniker.c +++ b/dlls/ole32/tests/moniker.c @@ -1532,6 +1532,7 @@ todo_wine_if(moniker_type == MKSYS_GENERICCOMPOSITE) static void test_class_moniker(void) { IMoniker *moniker, *inverse, *reduced; + IEnumMoniker *enummoniker; HRESULT hr; DWORD moniker_type; DWORD hash; @@ -1609,6 +1610,21 @@ todo_wine ok(reduced == moniker, "Unexpected moniker.\n"); IMoniker_Release(reduced);
+ /* Enum() */ + enummoniker = (void *)0xdeadbeef; + hr = IMoniker_Enum(moniker, TRUE, &enummoniker); + ok(hr == S_OK, "Unexpected hr %#x.\n", hr); + ok(!enummoniker, "Unexpected pointer.\n"); + + enummoniker = (void *)0xdeadbeef; + hr = IMoniker_Enum(moniker, FALSE, &enummoniker); + ok(hr == S_OK, "Unexpected hr %#x.\n", hr); + ok(!enummoniker, "Unexpected pointer.\n"); + + hr = IMoniker_Enum(moniker, FALSE, NULL); +todo_wine + ok(hr == E_INVALIDARG, "Unexpected hr %#x.\n", hr); + IBindCtx_Release(bindctx);
IMoniker_Release(moniker); @@ -1617,6 +1633,7 @@ todo_wine static void test_file_moniker(WCHAR* path) { IMoniker *moniker1 = NULL, *moniker2 = NULL, *inverse, *reduced; + IEnumMoniker *enummoniker; DWORD moniker_type; IBindCtx *bind_ctx; IStream *stream; @@ -1673,6 +1690,21 @@ todo_wine ok(reduced == moniker1, "Unexpected moniker.\n"); IMoniker_Release(reduced);
+ /* Enum() */ + enummoniker = (void *)0xdeadbeef; + hr = IMoniker_Enum(moniker1, TRUE, &enummoniker); + ok(hr == S_OK, "Unexpected hr %#x.\n", hr); + ok(!enummoniker, "Unexpected pointer.\n"); + + enummoniker = (void *)0xdeadbeef; + hr = IMoniker_Enum(moniker1, FALSE, &enummoniker); + ok(hr == S_OK, "Unexpected hr %#x.\n", hr); + ok(!enummoniker, "Unexpected pointer.\n"); + + hr = IMoniker_Enum(moniker1, FALSE, NULL); +todo_wine + ok(hr == E_INVALIDARG, "Unexpected hr %#x.\n", hr); + IBindCtx_Release(bind_ctx);
IStream_Release(stream); @@ -1792,6 +1824,7 @@ static void test_item_moniker(void) static const WCHAR wszDelimiter[] = {'!',0}; static const WCHAR wszObjectName[] = {'T','e','s','t',0}; static const WCHAR expected_display_name[] = { '!','T','e','s','t',0 }; + IEnumMoniker *enummoniker; WCHAR *display_name; LARGE_INTEGER pos; IStream *stream; @@ -1946,6 +1979,21 @@ todo_wine ok(reduced == moniker, "Unexpected moniker.\n"); IMoniker_Release(reduced);
+ /* Enum() */ + enummoniker = (void *)0xdeadbeef; + hr = IMoniker_Enum(moniker, TRUE, &enummoniker); + ok(hr == S_OK, "Unexpected hr %#x.\n", hr); + ok(!enummoniker, "Unexpected pointer.\n"); + + enummoniker = (void *)0xdeadbeef; + hr = IMoniker_Enum(moniker, FALSE, &enummoniker); + ok(hr == S_OK, "Unexpected hr %#x.\n", hr); + ok(!enummoniker, "Unexpected pointer.\n"); + + hr = IMoniker_Enum(moniker, FALSE, NULL); +todo_wine + ok(hr == E_INVALIDARG, "Unexpected hr %#x.\n", hr); + IMoniker_Release(moniker);
/* IsEqual */ @@ -1996,6 +2044,7 @@ static void test_anti_moniker(void) FILETIME filetime; IUnknown *unknown; static const WCHAR expected_display_name[] = { '\','.','.',0 }; + IEnumMoniker *enummoniker; IStream *stream; WCHAR *name;
@@ -2169,11 +2218,27 @@ todo_wine
IStream_Release(stream);
+ /* 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);
+ /* Enum() */ + enummoniker = (void *)0xdeadbeef; + hr = IMoniker_Enum(moniker, TRUE, &enummoniker); + ok(hr == S_OK, "Unexpected hr %#x.\n", hr); + ok(!enummoniker, "Unexpected pointer.\n"); + + enummoniker = (void *)0xdeadbeef; + hr = IMoniker_Enum(moniker, FALSE, &enummoniker); + ok(hr == S_OK, "Unexpected hr %#x.\n", hr); + ok(!enummoniker, "Unexpected pointer.\n"); + + hr = IMoniker_Enum(moniker, FALSE, NULL); +todo_wine + ok(hr == E_INVALIDARG, "Unexpected hr %#x.\n", hr); + IBindCtx_Release(bindctx); IMoniker_Release(moniker); IMoniker_Release(moniker2); @@ -2181,6 +2246,7 @@ todo_wine
static void test_generic_composite_moniker(void) { + IEnumMoniker *enummoniker; HRESULT hr; IMoniker *moniker; IMoniker *moniker1; @@ -2265,18 +2331,31 @@ todo_wine ok(moniker_type == MKSYS_GENERICCOMPOSITE, "Unexpected moniker type %d.\n", moniker_type); IMoniker_Release(inverse);
+ /* Enum() */ + hr = IMoniker_Enum(moniker, TRUE, &enummoniker); + ok(hr == S_OK, "Failed to get enumerator, hr %#x.\n", hr); + IEnumMoniker_Release(enummoniker); + + hr = IMoniker_Enum(moniker, FALSE, &enummoniker); + ok(hr == S_OK, "Failed to get enumerator, hr %#x.\n", hr); + IEnumMoniker_Release(enummoniker); + + hr = IMoniker_Enum(moniker, FALSE, NULL); +todo_wine + ok(hr == E_INVALIDARG, "Unexpected hr %#x.\n", hr); + IMoniker_Release(moniker); }
static void test_pointer_moniker(void) { + IMoniker *moniker, *inverse; + IEnumMoniker *enummoniker; HRESULT hr; - IMoniker *moniker; DWORD moniker_type; DWORD hash; IBindCtx *bindctx; FILETIME filetime; - IMoniker *inverse; IUnknown *unknown; IStream *stream; IROTData *rotdata; @@ -2383,6 +2462,19 @@ todo_wine
IBindCtx_Release(bindctx);
+ /* Enum() */ + enummoniker = (void *)0xdeadbeef; + hr = IMoniker_Enum(moniker, TRUE, &enummoniker); +todo_wine + ok(hr == E_NOTIMPL, "Unexpected hr %#x.\n", hr); + ok(!enummoniker, "Unexpected pointer.\n"); + + enummoniker = (void *)0xdeadbeef; + hr = IMoniker_Enum(moniker, FALSE, &enummoniker); +todo_wine + ok(hr == E_NOTIMPL, "Unexpected hr %#x.\n", hr); + ok(!enummoniker, "Unexpected pointer.\n"); + IMoniker_Release(moniker); }