Nikolay Sivov : mf/tests: Use a helper for supported intefaces checks.

Alexandre Julliard julliard at winehq.org
Fri Nov 13 15:57:52 CST 2020


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

Author: Nikolay Sivov <nsivov at codeweavers.com>
Date:   Fri Nov 13 15:31:35 2020 +0300

mf/tests: Use a helper for supported intefaces checks.

Signed-off-by: Nikolay Sivov <nsivov at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/mf/tests/mf.c | 80 +++++++++++++++++++++++-------------------------------
 1 file changed, 34 insertions(+), 46 deletions(-)

diff --git a/dlls/mf/tests/mf.c b/dlls/mf/tests/mf.c
index 9eccafee633..bd38785ea51 100644
--- a/dlls/mf/tests/mf.c
+++ b/dlls/mf/tests/mf.c
@@ -56,6 +56,21 @@ static void _expect_ref(IUnknown* obj, ULONG expected_refcount, int line)
             expected_refcount);
 }
 
+#define check_interface(a, b, c) check_interface_(__LINE__, a, b, c)
+static void check_interface_(unsigned int line, void *iface_ptr, REFIID iid, BOOL supported)
+{
+    IUnknown *iface = iface_ptr;
+    HRESULT hr, expected_hr;
+    IUnknown *unk;
+
+    expected_hr = supported ? S_OK : E_NOINTERFACE;
+
+    hr = IUnknown_QueryInterface(iface, iid, (void **)&unk);
+    ok_(__FILE__, line)(hr == expected_hr, "Got hr %#x, expected %#x.\n", hr, expected_hr);
+    if (SUCCEEDED(hr))
+        IUnknown_Release(unk);
+}
+
 static HWND create_window(void)
 {
     RECT r = {0, 0, 640, 480};
@@ -1028,7 +1043,6 @@ static void test_MFGetService(void)
 
 static void test_sequencer_source(void)
 {
-    IMFMediaSourceTopologyProvider *provider;
     IMFSequencerSource *seq_source;
     HRESULT hr;
 
@@ -1038,9 +1052,7 @@ static void test_sequencer_source(void)
     hr = MFCreateSequencerSource(NULL, &seq_source);
     ok(hr == S_OK, "Failed to create sequencer source, hr %#x.\n", hr);
 
-    hr = IMFSequencerSource_QueryInterface(seq_source, &IID_IMFMediaSourceTopologyProvider, (void **)&provider);
-    ok(hr == S_OK, "Failed to get provider interface, hr %#x.\n", hr);
-    IMFMediaSourceTopologyProvider_Release(provider);
+    check_interface(seq_source, &IID_IMFMediaSourceTopologyProvider, TRUE);
 
     IMFSequencerSource_Release(seq_source);
 
@@ -1743,7 +1755,6 @@ static void test_presentation_clock(void)
     MFTIME systime, time;
     LONGLONG clock_time;
     MFCLOCK_STATE state;
-    IMFTimer *timer;
     unsigned int i;
     DWORD value;
     float rate;
@@ -1756,6 +1767,12 @@ static void test_presentation_clock(void)
     hr = MFCreatePresentationClock(&clock);
     ok(hr == S_OK, "Failed to create presentation clock, hr %#x.\n", hr);
 
+    check_interface(clock, &IID_IMFTimer, TRUE);
+    check_interface(clock, &IID_IMFRateControl, TRUE);
+    check_interface(clock, &IID_IMFPresentationClock, TRUE);
+    check_interface(clock, &IID_IMFShutdown, TRUE);
+    check_interface(clock, &IID_IMFClock, TRUE);
+
     hr = IMFPresentationClock_QueryInterface(clock, &IID_IMFRateControl, (void **)&rate_control);
     ok(hr == S_OK, "Failed to get rate control interface, hr %#x.\n", hr);
 
@@ -1945,10 +1962,6 @@ static void test_presentation_clock(void)
 
     IMFRateControl_Release(rate_control);
 
-    hr = IMFPresentationClock_QueryInterface(clock, &IID_IMFTimer, (void **)&timer);
-    ok(hr == S_OK, "Failed to get timer interface, hr %#x.\n", hr);
-    IMFTimer_Release(timer);
-
     hr = IMFPresentationClock_QueryInterface(clock, &IID_IMFShutdown, (void **)&shutdown);
     ok(hr == S_OK, "Failed to get shutdown interface, hr %#x.\n", hr);
 
@@ -2084,7 +2097,6 @@ static void test_sample_grabber(void)
     IMFPresentationTimeSource *time_source;
     IMFPresentationClock *clock, *clock2;
     IMFStreamSink *stream, *stream2;
-    IMFClockStateSink *clocksink;
     IMFMediaEventGenerator *eg;
     IMFMediaSink *sink, *sink2;
     DWORD flags, count, id;
@@ -2135,9 +2147,7 @@ static void test_sample_grabber(void)
     hr = IMFMediaSink_GetStreamSinkByIndex(sink, 0, &stream);
     ok(hr == S_OK, "Failed to get sink stream, hr %#x.\n", hr);
 
-    hr = IMFStreamSink_QueryInterface(stream, &IID_IMFMediaEventGenerator, (void **)&unk);
-    ok(hr == S_OK, "Failed to get interface, hr %#x.\n", hr);
-    IUnknown_Release(unk);
+    check_interface(stream, &IID_IMFMediaEventGenerator, TRUE);
 
     hr = IMFStreamSink_GetIdentifier(stream, &id);
     ok(hr == S_OK, "Failed to get stream id, hr %#x.\n", hr);
@@ -2163,9 +2173,7 @@ static void test_sample_grabber(void)
     hr = IMFMediaSink_RemoveStreamSink(sink, 1);
     ok(hr == MF_E_STREAMSINKS_FIXED, "Unexpected hr %#x.\n", hr);
 
-    hr = IMFMediaSink_QueryInterface(sink, &IID_IMFClockStateSink, (void **)&clocksink);
-    ok(hr == S_OK, "Failed to get interface, hr %#x.\n", hr);
-    IMFClockStateSink_Release(clocksink);
+    check_interface(sink, &IID_IMFClockStateSink, TRUE);
 
     /* Event generator. */
     hr = IMFMediaSink_QueryInterface(sink, &IID_IMFMediaEventGenerator, (void **)&eg);
@@ -2915,14 +2923,9 @@ if (SUCCEEDED(hr))
     ok(hr == S_OK, "Unexpected hr %#x.\n", hr);
     ok(flags == (MEDIASINK_FIXED_STREAMS | MEDIASINK_CAN_PREROLL), "Unexpected flags %#x.\n", flags);
 
-    hr = IMFMediaSink_QueryInterface(sink, &IID_IMFMediaSinkPreroll, (void **)&unk);
-    ok(hr == S_OK, "Failed to get interface, hr %#x.\n", hr);
-    IUnknown_Release(unk);
-
-    /* Events */
-    hr = IMFMediaSink_QueryInterface(sink, &IID_IMFMediaEventGenerator, (void **)&unk);
-    ok(hr == S_OK, "Failed to get interface, hr %#x.\n", hr);
-    IUnknown_Release(unk);
+    check_interface(sink, &IID_IMFMediaSinkPreroll, TRUE);
+    check_interface(sink, &IID_IMFMediaEventGenerator, TRUE);
+    check_interface(sink, &IID_IMFClockStateSink, TRUE);
 
     /* Clock */
     hr = IMFMediaSink_QueryInterface(sink, &IID_IMFClockStateSink, (void **)&state_sink);
@@ -2971,9 +2974,7 @@ todo_wine
     hr = IMFMediaSink_GetStreamSinkByIndex(sink, 0, &stream_sink);
     ok(hr == S_OK, "Failed to get a stream, hr %#x.\n", hr);
 
-    hr = IMFStreamSink_QueryInterface(stream_sink, &IID_IMFMediaEventGenerator, (void **)&unk);
-    ok(hr == S_OK, "Failed to get interface, hr %#x.\n", hr);
-    IUnknown_Release(unk);
+    check_interface(stream_sink, &IID_IMFMediaEventGenerator, TRUE);
 
     hr = IMFStreamSink_GetIdentifier(stream_sink, &id);
     ok(hr == S_OK, "Unexpected hr %#x.\n", hr);
@@ -3236,12 +3237,9 @@ static void test_evr(void)
     IMFStreamSink *stream_sink, *stream_sink2;
     IMFVideoDisplayControl *display_control;
     IMFMediaType *media_type, *media_type2;
-    IMFMediaEventGenerator *ev_generator;
     IMFVideoSampleAllocator *allocator;
     IMFMediaTypeHandler *type_handler;
     IMFVideoRenderer *video_renderer;
-    IMFClockStateSink *clock_sink;
-    IMFMediaSinkPreroll *preroll;
     IMFMediaSink *sink, *sink2;
     IMFAttributes *attributes;
     IMFActivate *activate;
@@ -3281,6 +3279,12 @@ static void test_evr(void)
     hr = IMFActivate_ActivateObject(activate, &IID_IMFMediaSink, (void **)&sink);
     ok(hr == S_OK, "Unexpected hr %#x.\n", hr);
 
+    check_interface(sink, &IID_IMFMediaSinkPreroll, TRUE);
+    check_interface(sink, &IID_IMFVideoRenderer, TRUE);
+    check_interface(sink, &IID_IMFMediaEventGenerator, TRUE);
+    check_interface(sink, &IID_IMFClockStateSink, TRUE);
+    check_interface(sink, &IID_IMFGetService, TRUE);
+
     hr = MFGetService((IUnknown *)sink, &MR_VIDEO_RENDER_SERVICE, &IID_IMFVideoDisplayControl,
             (void **)&display_control);
     ok(hr == S_OK, "Unexpected hr %#x.\n", hr);
@@ -3443,22 +3447,6 @@ static void test_evr(void)
     ok(hr == S_OK, "Unexpected hr %#x.\n", hr);
     ok(flags == (MEDIASINK_CAN_PREROLL | MEDIASINK_CLOCK_REQUIRED), "Unexpected flags %#x.\n", flags);
 
-    hr = IMFMediaSink_QueryInterface(sink, &IID_IMFMediaSinkPreroll, (void **)&preroll);
-    ok(hr == S_OK, "Unexpected hr %#x.\n", hr);
-    IMFMediaSinkPreroll_Release(preroll);
-
-    hr = IMFMediaSink_QueryInterface(sink, &IID_IMFVideoRenderer, (void **)&video_renderer);
-    ok(hr == S_OK, "Unexpected hr %#x.\n", hr);
-    IMFVideoRenderer_Release(video_renderer);
-
-    hr = IMFMediaSink_QueryInterface(sink, &IID_IMFMediaEventGenerator, (void **)&ev_generator);
-    ok(hr == S_OK, "Unexpected hr %#x.\n", hr);
-    IMFMediaEventGenerator_Release(ev_generator);
-
-    hr = IMFMediaSink_QueryInterface(sink, &IID_IMFClockStateSink, (void **)&clock_sink);
-    ok(hr == S_OK, "Unexpected hr %#x.\n", hr);
-    IMFClockStateSink_Release(clock_sink);
-
     hr = IMFMediaSink_QueryInterface(sink, &IID_IMFGetService, (void **)&gs);
     ok(hr == S_OK, "Unexpected hr %#x.\n", hr);
 




More information about the wine-cvs mailing list