[PATCH 2/2] wincodecs/tests: Add a test for GetDecoderInfo() returned instance

Nikolay Sivov nsivov at codeweavers.com
Tue Feb 20 00:38:44 CST 2018


Signed-off-by: Nikolay Sivov <nsivov at codeweavers.com>
---
 dlls/windowscodecs/tests/info.c | 27 ++++++++++++++++++++++++++-
 1 file changed, 26 insertions(+), 1 deletion(-)

diff --git a/dlls/windowscodecs/tests/info.c b/dlls/windowscodecs/tests/info.c
index 5d0dc44ed5..4a9c9c6e93 100644
--- a/dlls/windowscodecs/tests/info.c
+++ b/dlls/windowscodecs/tests/info.c
@@ -109,8 +109,8 @@ static void test_decoder_info(void)
             1
         },
     };
+    IWICBitmapDecoderInfo *decoder_info, *decoder_info2;
     IWICComponentInfo *info;
-    IWICBitmapDecoderInfo *decoder_info;
     HRESULT hr;
     ULONG len;
     WCHAR value[256];
@@ -122,9 +122,34 @@ static void test_decoder_info(void)
     for (i = 0; i < sizeof(decoder_info_tests)/sizeof(decoder_info_tests[0]); i++)
     {
         struct decoder_info_test *test = &decoder_info_tests[i];
+        IWICBitmapDecoder *decoder, *decoder2;
         WCHAR extensionsW[64];
         WCHAR mimetypeW[64];
 
+        hr = CoCreateInstance(test->clsid, NULL, CLSCTX_INPROC_SERVER, &IID_IWICBitmapDecoder, (void **)&decoder);
+        ok(SUCCEEDED(hr), "Failed to create decoder, hr %#x.\n", hr);
+
+        decoder_info = NULL;
+        hr = IWICBitmapDecoder_GetDecoderInfo(decoder, &decoder_info);
+        ok(hr == S_OK || broken(IsEqualCLSID(&CLSID_WICBmpDecoder, test->clsid) && FAILED(hr)) /* Fails on Windows */,
+            "%u: failed to get decoder info, hr %#x.\n", i, hr);
+
+        if (hr == S_OK)
+        {
+            decoder_info2 = NULL;
+            hr = IWICBitmapDecoder_GetDecoderInfo(decoder, &decoder_info2);
+            ok(hr == S_OK, "Failed to get decoder info, hr %#x.\n", hr);
+        todo_wine
+            ok(decoder_info == decoder_info2, "Unexpected decoder info instance.\n");
+
+            hr = IWICBitmapDecoderInfo_QueryInterface(decoder_info, &IID_IWICBitmapDecoder, (void **)&decoder2);
+            ok(hr == E_NOINTERFACE, "Unexpected hr %#x.\n", hr);
+
+            IWICBitmapDecoderInfo_Release(decoder_info);
+            IWICBitmapDecoderInfo_Release(decoder_info2);
+        }
+        IWICBitmapDecoder_Release(decoder);
+
         MultiByteToWideChar(CP_ACP, 0, test->mimetype, -1, mimetypeW, sizeof(mimetypeW)/sizeof(mimetypeW[0]));
         MultiByteToWideChar(CP_ACP, 0, test->extensions, -1, extensionsW, sizeof(extensionsW)/sizeof(extensionsW[0]));
 
-- 
2.16.1




More information about the wine-devel mailing list