[PATCH 2/6] devenum/tests: Test registering DirectShow filters.
Zebediah Figura
z.figura12 at gmail.com
Tue Mar 6 20:07:10 CST 2018
Signed-off-by: Zebediah Figura <z.figura12 at gmail.com>
---
dlls/devenum/tests/devenum.c | 74 +++++++++++++++++++++++++++++++++++++++++++-
1 file changed, 73 insertions(+), 1 deletion(-)
diff --git a/dlls/devenum/tests/devenum.c b/dlls/devenum/tests/devenum.c
index 575aebd..79189f3 100644
--- a/dlls/devenum/tests/devenum.c
+++ b/dlls/devenum/tests/devenum.c
@@ -211,7 +211,78 @@ static void test_moniker_isequal(void)
return;
}
-/* CLSID_CDeviceMoniker */
+static BOOL find_moniker(const GUID *class, IMoniker *needle)
+{
+ ICreateDevEnum *devenum;
+ IEnumMoniker *enum_mon;
+ IMoniker *mon;
+ BOOL found = FALSE;
+
+ CoCreateInstance(&CLSID_SystemDeviceEnum, NULL, CLSCTX_INPROC, &IID_ICreateDevEnum, (void **)&devenum);
+ ICreateDevEnum_CreateClassEnumerator(devenum, class, &enum_mon, 0);
+ while (!found && IEnumMoniker_Next(enum_mon, 1, &mon, NULL) == S_OK)
+ {
+ if (IMoniker_IsEqual(mon, needle) == S_OK)
+ found = TRUE;
+
+ IMoniker_Release(mon);
+ }
+
+ IEnumMoniker_Release(enum_mon);
+ ICreateDevEnum_Release(devenum);
+ return found;
+}
+
+DEFINE_GUID(CLSID_TestFilter, 0xdeadbeef,0xcf51,0x43e6,0xb6,0xc5,0x29,0x9e,0xa8,0xb6,0xb5,0x91);
+
+static void test_register_filter(void)
+{
+ static const WCHAR name[] = {'d','e','v','e','n','u','m',' ','t','e','s','t',0};
+ IFilterMapper2 *mapper2;
+ IMoniker *mon = NULL;
+ REGFILTER2 rgf2 = {0};
+ HRESULT hr;
+
+ hr = CoCreateInstance(&CLSID_FilterMapper2, NULL, CLSCTX_INPROC, &IID_IFilterMapper2, (void **)&mapper2);
+ ok(hr == S_OK, "Failed to create FilterMapper2: %#x\n", hr);
+
+ rgf2.dwVersion = 2;
+ rgf2.dwMerit = MERIT_UNLIKELY;
+ S2(U(rgf2)).cPins2 = 0;
+
+ hr = IFilterMapper2_RegisterFilter(mapper2, &CLSID_TestFilter, name, &mon, NULL, NULL, &rgf2);
+ if (hr == E_ACCESSDENIED)
+ {
+ skip("Not enough permissions to register filters\n");
+ IFilterMapper2_Release(mapper2);
+ return;
+ }
+ ok(hr == S_OK, "RegisterFilter failed: %#x\n", hr);
+
+ ok(find_moniker(&CLSID_LegacyAmFilterCategory, mon), "filter should be registered\n");
+
+ hr = IFilterMapper2_UnregisterFilter(mapper2, NULL, NULL, &CLSID_TestFilter);
+ ok(hr == S_OK, "UnregisterFilter failed: %#x\n", hr);
+
+ ok(!find_moniker(&CLSID_LegacyAmFilterCategory, mon), "filter should not be registered\n");
+ IMoniker_Release(mon);
+
+ mon = NULL;
+ hr = IFilterMapper2_RegisterFilter(mapper2, &CLSID_TestFilter, name, &mon, &CLSID_AudioRendererCategory, NULL, &rgf2);
+ ok(hr == S_OK, "RegisterFilter failed: %#x\n", hr);
+
+ ok(find_moniker(&CLSID_AudioRendererCategory, mon), "filter should be registered\n");
+
+ hr = IFilterMapper2_UnregisterFilter(mapper2, &CLSID_AudioRendererCategory, NULL, &CLSID_TestFilter);
+todo_wine
+ ok(hr == S_OK, "UnregisterFilter failed: %#x\n", hr);
+
+todo_wine
+ ok(!find_moniker(&CLSID_AudioRendererCategory, mon), "filter should not be registered\n");
+ IMoniker_Release(mon);
+
+ IFilterMapper2_Release(mapper2);
+}
START_TEST(devenum)
{
@@ -231,6 +302,7 @@ START_TEST(devenum)
}
test_moniker_isequal();
+ test_register_filter();
CoUninitialize();
}
--
2.7.4
More information about the wine-devel
mailing list