From e1aaa103126989c812ebb3247724efdb82ff71bb Mon Sep 17 00:00:00 2001 From: Amine Khaldi Date: Sat, 3 Jun 2017 17:29:09 +0000 Subject: [PATCH] [DEVENUM_WINETEST] Sync with Wine Staging 2.9. CORE-13362 svn path=/trunk/; revision=74775 --- rostests/winetests/devenum/devenum.c | 99 ++++++++++++++++++++++++++++ 1 file changed, 99 insertions(+) diff --git a/rostests/winetests/devenum/devenum.c b/rostests/winetests/devenum/devenum.c index 4bfafb84345..394ba311b73 100644 --- a/rostests/winetests/devenum/devenum.c +++ b/rostests/winetests/devenum/devenum.c @@ -84,6 +84,15 @@ static void test_devenum(IBindCtx *bind_ctx) IPropertyBag* prop_bag = NULL; VARIANT var; HRESULT hr; + CLSID clsid = {0}; + + hr = IMoniker_GetClassID(moniker, NULL); + ok(hr == E_INVALIDARG, "IMoniker_GetClassID should failed %x\n", hr); + + hr = IMoniker_GetClassID(moniker, &clsid); + ok(hr == S_OK, "IMoniker_GetClassID failed with error %x\n", hr); + ok(IsEqualGUID(&clsid, &CLSID_CDeviceMoniker), + "Expected CLSID_CDeviceMoniker got %s\n", wine_dbgstr_guid(&clsid)); VariantInit(&var); hr = IMoniker_BindToStorage(moniker, bind_ctx, NULL, &IID_IPropertyBag, (LPVOID*)&prop_bag); @@ -131,6 +140,94 @@ static void test_devenum(IBindCtx *bind_ctx) if(sizeof(void*) == 4) ok(have_mrle, "mrle codec not found\n"); } +static void test_moniker_isequal(void) +{ + HRESULT res; + ICreateDevEnum *create_devenum = NULL; + IEnumMoniker *enum_moniker0 = NULL, *enum_moniker1 = NULL; + IMoniker *moniker0 = NULL, *moniker1 = NULL; + + res = CoCreateInstance(&CLSID_SystemDeviceEnum, NULL, CLSCTX_INPROC, + &IID_ICreateDevEnum, (LPVOID*)&create_devenum); + if (FAILED(res)) + { + skip("Cannot create SystemDeviceEnum object (%x)\n", res); + return; + } + + res = ICreateDevEnum_CreateClassEnumerator(create_devenum, &CLSID_LegacyAmFilterCategory, &enum_moniker0, 0); + ok(SUCCEEDED(res), "Cannot create enum moniker (res = %x)\n", res); + if (SUCCEEDED(res)) + { + if (SUCCEEDED(IEnumMoniker_Next(enum_moniker0, 1, &moniker0, NULL)) && + SUCCEEDED(IEnumMoniker_Next(enum_moniker0, 1, &moniker1, NULL))) + { + res = IMoniker_IsEqual(moniker0, moniker1); + ok(res == S_FALSE, "IMoniker_IsEqual should fail (res = %x)\n", res); + + res = IMoniker_IsEqual(moniker1, moniker0); + ok(res == S_FALSE, "IMoniker_IsEqual should fail (res = %x)\n", res); + + IMoniker_Release(moniker0); + IMoniker_Release(moniker1); + } + else + skip("Cannot get moniker for testing.\n"); + } + IEnumMoniker_Release(enum_moniker0); + + res = ICreateDevEnum_CreateClassEnumerator(create_devenum, &CLSID_LegacyAmFilterCategory, &enum_moniker0, 0); + ok(SUCCEEDED(res), "Cannot create enum moniker (res = %x)\n", res); + res = ICreateDevEnum_CreateClassEnumerator(create_devenum, &CLSID_AudioRendererCategory, &enum_moniker1, 0); + ok(SUCCEEDED(res), "Cannot create enum moniker (res = %x)\n", res); + if (SUCCEEDED(res)) + { + if (SUCCEEDED(IEnumMoniker_Next(enum_moniker0, 1, &moniker0, NULL)) && + SUCCEEDED(IEnumMoniker_Next(enum_moniker1, 1, &moniker1, NULL))) + { + res = IMoniker_IsEqual(moniker0, moniker1); + ok(res == S_FALSE, "IMoniker_IsEqual should failed (res = %x)\n", res); + + res = IMoniker_IsEqual(moniker1, moniker0); + ok(res == S_FALSE, "IMoniker_IsEqual should failed (res = %x)\n", res); + + IMoniker_Release(moniker0); + IMoniker_Release(moniker1); + } + else + skip("Cannot get moniker for testing.\n"); + } + IEnumMoniker_Release(enum_moniker0); + IEnumMoniker_Release(enum_moniker1); + + res = ICreateDevEnum_CreateClassEnumerator(create_devenum, &CLSID_LegacyAmFilterCategory, &enum_moniker0, 0); + ok(SUCCEEDED(res), "Cannot create enum moniker (res = %x)\n", res); + res = ICreateDevEnum_CreateClassEnumerator(create_devenum, &CLSID_LegacyAmFilterCategory, &enum_moniker1, 0); + ok(SUCCEEDED(res), "Cannot create enum moniker (res = %x)\n", res); + if (SUCCEEDED(res)) + { + if (SUCCEEDED(IEnumMoniker_Next(enum_moniker0, 1, &moniker0, NULL)) && + SUCCEEDED(IEnumMoniker_Next(enum_moniker1, 1, &moniker1, NULL))) + { + res = IMoniker_IsEqual(moniker0, moniker1); + ok(res == S_OK, "IMoniker_IsEqual failed (res = %x)\n", res); + + res = IMoniker_IsEqual(moniker1, moniker0); + ok(res == S_OK, "IMoniker_IsEqual failed (res = %x)\n", res); + + IMoniker_Release(moniker0); + IMoniker_Release(moniker1); + } + else + skip("Cannot get moniker for testing.\n"); + } + IEnumMoniker_Release(enum_moniker0); + IEnumMoniker_Release(enum_moniker1); + + ICreateDevEnum_Release(create_devenum); + + return; +} /* CLSID_CDeviceMoniker */ @@ -151,5 +248,7 @@ START_TEST(devenum) IBindCtx_Release(bind_ctx); } + test_moniker_isequal(); + CoUninitialize(); }