Zebediah Figura : quartz/tests: Clean up tests for IPersistPropertyBag on the DirectSound renderer.

Alexandre Julliard julliard at winehq.org
Tue Mar 12 16:56:14 CDT 2019


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

Author: Zebediah Figura <z.figura12 at gmail.com>
Date:   Tue Mar 12 00:32:54 2019 -0500

quartz/tests: Clean up tests for IPersistPropertyBag on the DirectSound renderer.

Signed-off-by: Zebediah Figura <z.figura12 at gmail.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/quartz/tests/dsoundrender.c | 91 ++++++++++++++--------------------------
 1 file changed, 32 insertions(+), 59 deletions(-)

diff --git a/dlls/quartz/tests/dsoundrender.c b/dlls/quartz/tests/dsoundrender.c
index c350192..f633129 100644
--- a/dlls/quartz/tests/dsoundrender.c
+++ b/dlls/quartz/tests/dsoundrender.c
@@ -1,5 +1,5 @@
 /*
- * Unit tests for DSound Renderer functions
+ * DirectSound renderer filter unit tests
  *
  * Copyright (C) 2010 Maarten Lankhorst for CodeWeavers
  * Copyright (C) 2007 Google (Lei Zhang)
@@ -20,12 +20,11 @@
  */
 
 #define COBJMACROS
-
-#include "wine/test.h"
 #include "dshow.h"
 #include "initguid.h"
 #include "dsound.h"
 #include "amaudio.h"
+#include "wine/test.h"
 
 #define QI_SUCCEED(iface, riid, ppv) hr = IUnknown_QueryInterface(iface, &riid, (LPVOID*)&ppv); \
     ok(hr == S_OK, "IUnknown_QueryInterface returned %x\n", hr); \
@@ -55,64 +54,43 @@ static void release_dsound_renderer(void)
     ok(hr == 0, "IUnknown_Release failed with %x\n", hr);
 }
 
-static HRESULT WINAPI PB_QueryInterface(IPropertyBag *iface, REFIID riid, void **ppv)
-{
-    ok(0, "Should not be called\n");
-    *ppv = NULL;
-    return E_NOINTERFACE;
-}
-
-static ULONG WINAPI PB_AddRef(IPropertyBag *iface)
+static void test_property_bag(void)
 {
-    ok(0, "Should not be called\n");
-    return 2;
-}
+    IPersistPropertyBag *ppb;
+    ICreateDevEnum *devenum;
+    IEnumMoniker *enummon;
+    IPropertyBag *propbag;
+    IMoniker *mon;
+    HRESULT hr;
 
-static ULONG WINAPI PB_Release(IPropertyBag *iface)
-{
-    ok(0, "Should not be called\n");
-    return 1;
-}
+    CoCreateInstance(&CLSID_SystemDeviceEnum, NULL, CLSCTX_INPROC_SERVER,
+            &IID_ICreateDevEnum, (void **)&devenum);
+    ICreateDevEnum_CreateClassEnumerator(devenum, &CLSID_AudioRendererCategory, &enummon, 0);
 
-static HRESULT WINAPI PB_Read(IPropertyBag *iface, LPCOLESTR name, VARIANT *var, IErrorLog *log)
-{
-    static const WCHAR dsguid[] = { 'D','S','G','u','i','d', 0 };
-    char temp[50];
-    WideCharToMultiByte(CP_ACP, 0, name, -1, temp, sizeof(temp)-1, NULL, NULL);
-    temp[sizeof(temp)-1] = 0;
-    trace("Trying to read %s, type %u\n", temp, var->n1.n2.vt);
-    if (!lstrcmpW(name, dsguid))
+    while (IEnumMoniker_Next(enummon, 1, &mon, NULL) == S_OK)
     {
-        static const WCHAR defaultplayback[] =
-        {
-            '{','D','E','F','0','0','0','0','0','-',
-            '9','C','6','D','-','4','7','E','D','-',
-            'A','A','F','1','-','4','D','D','A','8',
-            'F','2','B','5','C','0','3','}',0
-        };
-        ok(var->n1.n2.vt == VT_BSTR, "Wrong type asked: %u\n", var->n1.n2.vt);
-        var->n1.n2.n3.bstrVal = SysAllocString(defaultplayback);
-        return S_OK;
+        hr = CoCreateInstance(&CLSID_DSoundRender, NULL, CLSCTX_INPROC_SERVER,
+                &IID_IPersistPropertyBag, (void **)&ppb);
+        todo_wine ok(hr == S_OK, "Got hr %#x.\n", hr);
+        if (hr != S_OK) break;
+
+        IMoniker_BindToStorage(mon, NULL, NULL, &IID_IPropertyBag, (void **)&propbag);
+
+        hr = IPersistPropertyBag_InitNew(ppb);
+        ok(hr == S_OK, "Got hr %#x.\n", hr);
+
+        hr = IPersistPropertyBag_Load(ppb, propbag, NULL);
+        ok(hr == S_OK, "Got hr %#x.\n", hr);
+
+        IPersistPropertyBag_Release(ppb);
+        IPropertyBag_Release(propbag);
+        IMoniker_Release(mon);
     }
-    ok(0, "Unknown property '%s' queried\n", temp);
-    return E_FAIL;
-}
 
-static HRESULT WINAPI PB_Write(IPropertyBag *iface, LPCOLESTR name, VARIANT *var)
-{
-    ok(0, "Should not be called\n");
-    return E_FAIL;
+    IEnumMoniker_Release(enummon);
+    ICreateDevEnum_Release(devenum);
 }
 
-static IPropertyBagVtbl PB_Vtbl =
-{
-    PB_QueryInterface,
-    PB_AddRef,
-    PB_Release,
-    PB_Read,
-    PB_Write
-};
-
 static void test_query_interface(void)
 {
     HRESULT hr;
@@ -140,12 +118,6 @@ static void test_query_interface(void)
     QI_SUCCEED(pDSRender, IID_IDirectSound3DBuffer, ds3dbuf);
     RELEASE_EXPECT(ds3dbuf, 1);
     QI_SUCCEED(pDSRender, IID_IPersistPropertyBag, ppb);
-    if (ppb)
-    {
-        IPropertyBag bag = { &PB_Vtbl };
-        hr = IPersistPropertyBag_Load(ppb, &bag, NULL);
-        ok(hr == S_OK, "Couldn't load default device: %08x\n", hr);
-    }
     RELEASE_EXPECT(ppb, 1);
     }
     QI_SUCCEED(pDSRender, IID_IMediaPosition, pMediaPosition);
@@ -224,6 +196,7 @@ START_TEST(dsoundrender)
     if (!create_dsound_renderer())
         return;
 
+    test_property_bag();
     test_query_interface();
     test_basefilter();
 




More information about the wine-cvs mailing list