[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