Michael Stefaniuc : qedit/tests: Expand the SampleGrabber COM tests.

Alexandre Julliard julliard at winehq.org
Wed Feb 12 13:44:38 CST 2014


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

Author: Michael Stefaniuc <mstefani at redhat.de>
Date:   Wed Feb 12 01:05:05 2014 +0100

qedit/tests: Expand the SampleGrabber COM tests.

---

 dlls/qedit/tests/mediadet.c |   56 ++++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 55 insertions(+), 1 deletion(-)

diff --git a/dlls/qedit/tests/mediadet.c b/dlls/qedit/tests/mediadet.c
index c488b37..cc16b6b 100644
--- a/dlls/qedit/tests/mediadet.c
+++ b/dlls/qedit/tests/mediadet.c
@@ -27,6 +27,7 @@
 #include "uuids.h"
 #include "wine/test.h"
 #include "qedit.h"
+#include "control.h"
 #include "rc.h"
 
 /* Outer IUnknown for COM aggregation tests */
@@ -358,6 +359,10 @@ static void test_samplegrabber(void)
 {
     struct unk_impl unk_obj = {{&unk_vtbl}, 19, NULL};
     ISampleGrabber *sg;
+    IBaseFilter *bf;
+    IMediaFilter *mf;
+    IPersist *persist;
+    IUnknown *unk;
     ULONG refcount;
     HRESULT hr;
 
@@ -374,8 +379,57 @@ static void test_samplegrabber(void)
     ok(refcount == unk_obj.ref, "SampleGrabber just pretends to support COM aggregation\n");
     refcount = ISampleGrabber_Release(sg);
     ok(refcount == 19, "Refcount should be back at 19 but is %u\n", refcount);
-
     IUnknown_Release(unk_obj.inner_unk);
+
+    /* Invalid RIID */
+    hr = CoCreateInstance(&CLSID_SampleGrabber, NULL, CLSCTX_INPROC_SERVER, &IID_IClassFactory,
+            (void**)&sg);
+    ok(hr == E_NOINTERFACE, "SampleGrabber create failed: %08x, expected E_NOINTERFACE\n", hr);
+
+    /* Same refcount for all SampleGrabber interfaces */
+    hr = CoCreateInstance(&CLSID_SampleGrabber, NULL, CLSCTX_INPROC_SERVER, &IID_ISampleGrabber,
+            (void**)&sg);
+    ok(hr == S_OK, "SampleGrabber create failed: %08x, expected S_OK\n", hr);
+    refcount = ISampleGrabber_AddRef(sg);
+    ok(refcount == 2, "refcount == %u, expected 2\n", refcount);
+
+    hr = ISampleGrabber_QueryInterface(sg, &IID_IBaseFilter, (void**)&bf);
+    ok(hr == S_OK, "QueryInterface for IID_IBaseFilter failed: %08x\n", hr);
+    refcount = IBaseFilter_AddRef(bf);
+    ok(refcount == 4, "refcount == %u, expected 4\n", refcount);
+    refcount = IBaseFilter_Release(bf);
+
+    hr = ISampleGrabber_QueryInterface(sg, &IID_IMediaFilter, (void**)&mf);
+    ok(hr == S_OK, "QueryInterface for IID_IMediaFilter failed: %08x\n", hr);
+    refcount = IMediaFilter_AddRef(mf);
+    ok(refcount == 5, "refcount == %u, expected 5\n", refcount);
+    refcount = IMediaFilter_Release(mf);
+
+    hr = ISampleGrabber_QueryInterface(sg, &IID_IPersist, (void**)&persist);
+    ok(hr == S_OK, "QueryInterface for IID_IPersist failed: %08x\n", hr);
+    refcount = IPersist_AddRef(persist);
+    ok(refcount == 6, "refcount == %u, expected 6\n", refcount);
+    refcount = IPersist_Release(persist);
+
+    hr = ISampleGrabber_QueryInterface(sg, &IID_IUnknown, (void**)&unk);
+    ok(hr == S_OK, "QueryInterface for IID_IUnknown failed: %08x\n", hr);
+    refcount = IUnknown_AddRef(unk);
+    ok(refcount == 7, "refcount == %u, expected 7\n", refcount);
+    refcount = IUnknown_Release(unk);
+
+    /* Interfaces that native does not support */
+    hr = ISampleGrabber_QueryInterface(sg, &IID_IMediaPosition, (void**)&unk);
+    todo_wine ok(hr == E_NOINTERFACE, "QueryInterface for IID_IMediaPosition failed: %08x\n", hr);
+    hr = ISampleGrabber_QueryInterface(sg, &IID_IMediaSeeking, (void**)&unk);
+    todo_wine ok(hr == E_NOINTERFACE, "QueryInterface for IID_IMediaSeeking failed: %08x\n", hr);
+    hr = ISampleGrabber_QueryInterface(sg, &IID_IMemInputPin, (void**)&unk);
+    ok(hr == E_NOINTERFACE, "QueryInterface for IID_IMemInputPin failed: %08x\n", hr);
+    hr = ISampleGrabber_QueryInterface(sg, &IID_IQualityControl, (void**)&unk);
+    ok(hr == E_NOINTERFACE, "QueryInterface for IID_IQualityControl failed: %08x\n", hr);
+    hr = ISampleGrabber_QueryInterface(sg, &IID_ISeekingPassThru, (void**)&unk);
+    ok(hr == E_NOINTERFACE, "QueryInterface for IID_ISeekingPassThru failed: %08x\n", hr);
+
+    while (ISampleGrabber_Release(sg));
 }
 
 START_TEST(mediadet)




More information about the wine-cvs mailing list