Nikolay Sivov : mfplat/tests: Add a helper to check for supported interfaces.
Alexandre Julliard
julliard at winehq.org
Mon Nov 16 15:28:57 CST 2020
Module: wine
Branch: master
Commit: bf7e6d1773a87d375965d61f7cf442fa37242380
URL: https://source.winehq.org/git/wine.git/?a=commit;h=bf7e6d1773a87d375965d61f7cf442fa37242380
Author: Nikolay Sivov <nsivov at codeweavers.com>
Date: Mon Nov 16 17:50:17 2020 +0300
mfplat/tests: Add a helper to check for supported interfaces.
Signed-off-by: Nikolay Sivov <nsivov at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
dlls/mfplat/tests/mfplat.c | 90 +++++++++++++++++++---------------------------
1 file changed, 36 insertions(+), 54 deletions(-)
diff --git a/dlls/mfplat/tests/mfplat.c b/dlls/mfplat/tests/mfplat.c
index c9a01644c6b..474d6281f5f 100644
--- a/dlls/mfplat/tests/mfplat.c
+++ b/dlls/mfplat/tests/mfplat.c
@@ -70,6 +70,21 @@ static void _expect_ref(IUnknown *obj, ULONG ref, int line)
ok_(__FILE__,line)(rc == ref, "Unexpected refcount %d, expected %d.\n", rc, ref);
}
+#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 HRESULT (WINAPI *pD3D11CreateDevice)(IDXGIAdapter *adapter, D3D_DRIVER_TYPE driver_type, HMODULE swrast, UINT flags,
const D3D_FEATURE_LEVEL *feature_levels, UINT levels, UINT sdk_version, ID3D11Device **device_out,
D3D_FEATURE_LEVEL *obtained_feature_level, ID3D11DeviceContext **immediate_context);
@@ -867,8 +882,8 @@ if(0)
hr = MFCreateMediaType(&mediatype);
ok(hr == S_OK, "Unexpected hr %#x.\n", hr);
- hr = IMFMediaType_QueryInterface(mediatype, &IID_IMFVideoMediaType, (void **)&unk);
- ok(hr == E_NOINTERFACE, "Unexpected hr %#x.\n", hr);
+ check_interface(mediatype, &IID_IMFVideoMediaType, FALSE);
+
hr = IMFMediaType_QueryInterface(mediatype, &IID_IUnknown, (void **)&unk);
ok(hr == S_OK, "Unexpected hr %#x.\n", hr);
ok(unk == (IUnknown *)mediatype, "Unexpected pointer.\n");
@@ -899,13 +914,9 @@ if(0)
hr = MFCreateVideoMediaTypeFromSubtype(&MFVideoFormat_RGB555, &video_type);
ok(hr == S_OK, "Unexpected hr %#x.\n", hr);
- hr = IMFVideoMediaType_QueryInterface(video_type, &IID_IMFMediaType, (void **)&unk);
- ok(hr == S_OK, "Unexpected hr %#x.\n", hr);
- IUnknown_Release(unk);
- hr = IMFVideoMediaType_QueryInterface(video_type, &IID_IMFVideoMediaType, (void **)&unk);
- ok(hr == S_OK, "Unexpected hr %#x.\n", hr);
- IUnknown_Release(unk);
+ check_interface(video_type, &IID_IMFMediaType, TRUE);
+ check_interface(video_type, &IID_IMFVideoMediaType, TRUE);
/* Major and subtype are set on creation. */
hr = IMFVideoMediaType_GetCount(video_type, &count);
@@ -917,8 +928,7 @@ if(0)
hr = IMFVideoMediaType_GetCount(video_type, &count);
ok(!count, "Unexpected attribute count %#x.\n", hr);
- hr = IMFVideoMediaType_QueryInterface(video_type, &IID_IMFVideoMediaType, (void **)&unk);
- ok(hr == E_NOINTERFACE, "Unexpected hr %#x.\n", hr);
+ check_interface(video_type, &IID_IMFVideoMediaType, FALSE);
IMFVideoMediaType_Release(video_type);
@@ -928,8 +938,8 @@ if(0)
hr = MFCreateMediaType(&mediatype);
ok(hr == S_OK, "Unexpected hr %#x.\n", hr);
- hr = IMFMediaType_QueryInterface(mediatype, &IID_IMFAudioMediaType, (void **)&unk);
- ok(hr == E_NOINTERFACE, "Unexpected hr %#x.\n", hr);
+ check_interface(mediatype, &IID_IMFAudioMediaType, FALSE);
+
hr = IMFMediaType_QueryInterface(mediatype, &IID_IUnknown, (void **)&unk);
ok(hr == S_OK, "Unexpected hr %#x.\n", hr);
ok(unk == (IUnknown *)mediatype, "Unexpected pointer.\n");
@@ -1620,17 +1630,10 @@ static void test_MFCreateMFByteStreamOnStream(void)
ref = IMFByteStream_Release(bytestream2);
ok(ref == 2, "got %u\n", ref);
- hr = IMFByteStream_QueryInterface(bytestream, &IID_IMFByteStreamBuffering, (void **)&unknown);
- ok(hr == E_NOINTERFACE, "Unexpected hr %#x.\n", hr);
-
- hr = IMFByteStream_QueryInterface(bytestream, &IID_IMFByteStreamCacheControl, (void **)&unknown);
- ok(hr == E_NOINTERFACE, "Unexpected hr %#x.\n", hr);
-
- hr = IMFByteStream_QueryInterface(bytestream, &IID_IMFMediaEventGenerator, (void **)&unknown);
- ok(hr == E_NOINTERFACE, "Unexpected hr %#x.\n", hr);
-
- hr = IMFByteStream_QueryInterface(bytestream, &IID_IMFGetService, (void **)&unknown);
- ok(hr == E_NOINTERFACE, "Unexpected hr %#x.\n", hr);
+ check_interface(bytestream, &IID_IMFByteStreamBuffering, FALSE);
+ check_interface(bytestream, &IID_IMFByteStreamCacheControl, FALSE);
+ check_interface(bytestream, &IID_IMFMediaEventGenerator, FALSE);
+ check_interface(bytestream, &IID_IMFGetService, FALSE);
hr = IMFByteStream_GetCapabilities(bytestream, &caps);
ok(hr == S_OK, "Failed to get stream capabilities, hr %#x.\n", hr);
@@ -1666,7 +1669,6 @@ static void test_file_stream(void)
WCHAR pathW[MAX_PATH];
DWORD caps, count;
WCHAR *filename;
- IUnknown *unk;
HRESULT hr;
WCHAR *str;
BOOL eos;
@@ -1680,18 +1682,10 @@ static void test_file_stream(void)
MF_FILEFLAGS_NONE, filename, &bytestream);
ok(hr == S_OK, "got 0x%08x\n", hr);
- hr = IMFByteStream_QueryInterface(bytestream, &IID_IMFByteStreamBuffering, (void **)&unk);
- ok(hr == E_NOINTERFACE, "Unexpected hr %#x.\n", hr);
-
- hr = IMFByteStream_QueryInterface(bytestream, &IID_IMFByteStreamCacheControl, (void **)&unk);
- ok(hr == E_NOINTERFACE, "Unexpected hr %#x.\n", hr);
-
- hr = IMFByteStream_QueryInterface(bytestream, &IID_IMFMediaEventGenerator, (void **)&unk);
- ok(hr == E_NOINTERFACE, "Unexpected hr %#x.\n", hr);
-
- hr = IMFByteStream_QueryInterface(bytestream, &IID_IMFGetService, (void **)&unk);
- ok(hr == S_OK, "Failed to get interface pointer, hr %#x.\n", hr);
- IUnknown_Release(unk);
+ check_interface(bytestream, &IID_IMFByteStreamBuffering, FALSE);
+ check_interface(bytestream, &IID_IMFByteStreamCacheControl, FALSE);
+ check_interface(bytestream, &IID_IMFMediaEventGenerator, FALSE);
+ check_interface(bytestream, &IID_IMFGetService, TRUE);
hr = IMFByteStream_GetCapabilities(bytestream, &caps);
ok(hr == S_OK, "Failed to get stream capabilities, hr %#x.\n", hr);
@@ -1818,7 +1812,6 @@ static void test_system_memory_buffer(void)
HRESULT hr;
DWORD length, max;
BYTE *data, *data2;
- IUnknown *unk;
hr = MFCreateMemoryBuffer(1024, NULL);
ok(hr == E_INVALIDARG || hr == E_POINTER, "got 0x%08x\n", hr);
@@ -1837,8 +1830,7 @@ static void test_system_memory_buffer(void)
hr = MFCreateMemoryBuffer(1024, &buffer);
ok(hr == S_OK, "got 0x%08x\n", hr);
- hr = IMFMediaBuffer_QueryInterface(buffer, &IID_IMFGetService, (void **)&unk);
- ok(hr == E_NOINTERFACE, "Unexpected hr %#x.\n", hr);
+ check_interface(buffer, &IID_IMFGetService, FALSE);
hr = IMFMediaBuffer_GetMaxLength(buffer, NULL);
ok(hr == E_INVALIDARG || hr == E_POINTER, "got 0x%08x\n", hr);
@@ -4443,7 +4435,6 @@ static void test_create_property_store(void)
PROPVARIANT value = {0};
PROPERTYKEY key;
ULONG refcount;
- IUnknown *unk;
DWORD count;
HRESULT hr;
@@ -4458,10 +4449,8 @@ static void test_create_property_store(void)
ok(store2 != store, "Expected different store objects.\n");
IPropertyStore_Release(store2);
- hr = IPropertyStore_QueryInterface(store, &IID_IPropertyStoreCache, (void **)&unk);
- ok(hr == E_NOINTERFACE, "Unexpected hr %#x.\n", hr);
- hr = IPropertyStore_QueryInterface(store, &IID_IPersistSerializedPropStorage, (void **)&unk);
- ok(hr == E_NOINTERFACE, "Unexpected hr %#x.\n", hr);
+ check_interface(store, &IID_IPropertyStoreCache, FALSE);
+ check_interface(store, &IID_IPersistSerializedPropStorage, FALSE);
hr = IPropertyStore_GetCount(store, NULL);
ok(hr == E_INVALIDARG, "Unexpected hr %#x.\n", hr);
@@ -5195,7 +5184,6 @@ static void test_MFCreate2DMediaBuffer(void)
IMF2DBuffer *_2dbuffer;
IMFMediaBuffer *buffer;
int i, pitch, pitch2;
- IUnknown *unk;
HRESULT hr;
BOOL ret;
@@ -5218,9 +5206,7 @@ static void test_MFCreate2DMediaBuffer(void)
hr = pMFCreate2DMediaBuffer(2, 3, MAKEFOURCC('N','V','1','2'), FALSE, &buffer);
ok(hr == S_OK, "Failed to create a buffer, hr %#x.\n", hr);
- hr = IMFMediaBuffer_QueryInterface(buffer, &IID_IMFGetService, (void **)&unk);
- ok(hr == S_OK, "Unexpected hr %#x.\n", hr);
- IUnknown_Release(unk);
+ check_interface(buffer, &IID_IMFGetService, TRUE);
/* Full backing buffer size, with 64 bytes per row alignment. */
hr = IMFMediaBuffer_GetMaxLength(buffer, &max_length);
@@ -5450,7 +5436,6 @@ static void test_MFCreateMediaBufferFromMediaType(void)
HRESULT hr;
IMFMediaType *media_type;
unsigned int i;
- IUnknown *unk;
if (!pMFCreateMediaBufferFromMediaType)
{
@@ -5483,8 +5468,7 @@ static void test_MFCreateMediaBufferFromMediaType(void)
if (FAILED(hr))
break;
- hr = IMFMediaBuffer_QueryInterface(buffer, &IID_IMFGetService, (void **)&unk);
- ok(hr == E_NOINTERFACE, "Unexpected hr %#x.\n", hr);
+ check_interface(buffer, &IID_IMFGetService, FALSE);
hr = IMFMediaBuffer_GetMaxLength(buffer, &length);
ok(hr == S_OK, "Failed to get length, hr %#x.\n", hr);
@@ -5827,7 +5811,6 @@ done:
static void test_MFCreateTrackedSample(void)
{
IMFTrackedSample *tracked_sample;
- IMFDesiredSample *desired_sample;
IMFSample *sample;
IUnknown *unk;
HRESULT hr;
@@ -5852,8 +5835,7 @@ static void test_MFCreateTrackedSample(void)
IMFSample_Release(sample);
- hr = IMFTrackedSample_QueryInterface(tracked_sample, &IID_IMFDesiredSample, (void **)&desired_sample);
- ok(hr == E_NOINTERFACE, "Unexpected hr %#x.\n", hr);
+ check_interface(tracked_sample, &IID_IMFDesiredSample, FALSE);
IMFTrackedSample_Release(tracked_sample);
}
More information about the wine-cvs
mailing list