[4/5] windowscodecs: Add test for IWICMetadataReaderInfo.
Vincent Povirk
madewokherd at gmail.com
Thu Jun 7 10:38:07 CDT 2012
-------------- next part --------------
From 1193e642bbc6a1d87b29b0647a3fccdf32847524 Mon Sep 17 00:00:00 2001
From: Vincent Povirk <vincent at codeweavers.com>
Date: Thu, 31 May 2012 12:38:34 -0500
Subject: [PATCH 4/5] windowscodecs: Add test for IWICMetadataReaderInfo.
---
dlls/windowscodecs/tests/info.c | 144 +++++++++++++++++++++++++++++++++++++++
include/wincodecsdk.idl | 3 +
2 files changed, 147 insertions(+)
diff --git a/dlls/windowscodecs/tests/info.c b/dlls/windowscodecs/tests/info.c
index de2dd32..a2a025c 100644
--- a/dlls/windowscodecs/tests/info.c
+++ b/dlls/windowscodecs/tests/info.c
@@ -24,6 +24,7 @@
#include "windef.h"
#include "objbase.h"
#include "wincodec.h"
+#include "wincodecsdk.h"
#include "wine/test.h"
static void test_decoder_info(void)
@@ -91,11 +92,154 @@ static void test_decoder_info(void)
IWICImagingFactory_Release(factory);
}
+static void test_reader_info(void)
+{
+ IWICImagingFactory *factory;
+ IWICComponentInfo *info;
+ IWICMetadataReaderInfo *reader_info;
+ HRESULT hr;
+ CLSID clsid;
+ GUID container_formats[10];
+ UINT count, format_count, size;
+ WICMetadataPattern *patterns;
+
+ hr = CoCreateInstance(&CLSID_WICImagingFactory, NULL, CLSCTX_INPROC_SERVER,
+ &IID_IWICImagingFactory, (void**)&factory);
+ ok(hr == S_OK, "CoCreateInstance failed, hr=%x\n", hr);
+ if (FAILED(hr)) return;
+
+ hr = IWICImagingFactory_CreateComponentInfo(factory, &CLSID_WICUnknownMetadataReader, &info);
+ todo_wine ok(hr == S_OK, "CreateComponentInfo failed, hr=%x\n", hr);
+
+ if (FAILED(hr))
+ {
+ IWICImagingFactory_Release(factory);
+ return;
+ }
+
+ hr = IWICComponentInfo_QueryInterface(info, &IID_IWICMetadataReaderInfo, (void**)&reader_info);
+ ok(hr == S_OK, "QueryInterface failed, hr=%x\n", hr);
+
+ hr = IWICMetadataReaderInfo_GetCLSID(reader_info, NULL);
+ ok(hr == E_INVALIDARG, "GetCLSID failed, hr=%x\n", hr);
+
+ hr = IWICMetadataReaderInfo_GetCLSID(reader_info, &clsid);
+ ok(hr == S_OK, "GetCLSID failed, hr=%x\n", hr);
+ ok(IsEqualGUID(&CLSID_WICUnknownMetadataReader, &clsid), "GetCLSID returned wrong result\n");
+
+ hr = IWICMetadataReaderInfo_GetMetadataFormat(reader_info, &clsid);
+ ok(hr == S_OK, "GetMetadataFormat failed, hr=%x\n", hr);
+ ok(IsEqualGUID(&GUID_MetadataFormatUnknown, &clsid), "GetMetadataFormat returned wrong result\n");
+
+ hr = IWICMetadataReaderInfo_GetContainerFormats(reader_info, 0, NULL, NULL);
+ ok(hr == E_INVALIDARG, "GetContainerFormats failed, hr=%x\n", hr);
+
+ count = 0xdeadbeef;
+ hr = IWICMetadataReaderInfo_GetContainerFormats(reader_info, 0, NULL, &count);
+ ok(hr == S_OK, "GetContainerFormats failed, hr=%x\n", hr);
+ ok(count == 0, "unexpected count %d\n", count);
+
+ hr = IWICMetadataReaderInfo_GetPatterns(reader_info, &GUID_ContainerFormatPng,
+ 0, NULL, NULL, NULL);
+ ok(hr == E_INVALIDARG, "GetPatterns failed, hr=%x\n", hr);
+
+ count = size = 0xdeadbeef;
+ hr = IWICMetadataReaderInfo_GetPatterns(reader_info, &GUID_ContainerFormatPng,
+ 0, NULL, &count, &size);
+ ok(hr == WINCODEC_ERR_COMPONENTNOTFOUND || broken(hr == S_OK) /* Windows XP */,
+ "GetPatterns failed, hr=%x\n", hr);
+ ok(count == 0xdeadbeef, "unexpected count %d\n", count);
+ ok(size == 0xdeadbeef, "unexpected size %d\n", size);
+
+ IWICMetadataReaderInfo_Release(reader_info);
+
+ IWICComponentInfo_Release(info);
+
+ hr = IWICImagingFactory_CreateComponentInfo(factory, &CLSID_WICXMBStructMetadataReader, &info);
+ ok(hr == S_OK, "CreateComponentInfo failed, hr=%x\n", hr);
+
+ hr = IWICComponentInfo_QueryInterface(info, &IID_IWICMetadataReaderInfo, (void**)&reader_info);
+ ok(hr == S_OK, "QueryInterface failed, hr=%x\n", hr);
+
+ hr = IWICMetadataReaderInfo_GetCLSID(reader_info, NULL);
+ ok(hr == E_INVALIDARG, "GetCLSID failed, hr=%x\n", hr);
+
+ hr = IWICMetadataReaderInfo_GetCLSID(reader_info, &clsid);
+ ok(hr == S_OK, "GetCLSID failed, hr=%x\n", hr);
+ ok(IsEqualGUID(&CLSID_WICXMBStructMetadataReader, &clsid), "GetCLSID returned wrong result\n");
+
+ hr = IWICMetadataReaderInfo_GetMetadataFormat(reader_info, &clsid);
+ ok(hr == S_OK, "GetMetadataFormat failed, hr=%x\n", hr);
+ ok(IsEqualGUID(&GUID_MetadataFormatXMPStruct, &clsid), "GetMetadataFormat returned wrong result\n");
+
+ hr = IWICMetadataReaderInfo_GetContainerFormats(reader_info, 0, NULL, NULL);
+ ok(hr == E_INVALIDARG, "GetContainerFormats failed, hr=%x\n", hr);
+
+ count = 0xdeadbeef;
+ hr = IWICMetadataReaderInfo_GetContainerFormats(reader_info, 0, NULL, &count);
+ ok(hr == S_OK, "GetContainerFormats failed, hr=%x\n", hr);
+ ok(count >= 2, "unexpected count %d\n", count);
+ format_count = count;
+
+ count = 0xdeadbeef;
+ hr = IWICMetadataReaderInfo_GetContainerFormats(reader_info, 1, container_formats, &count);
+ ok(hr == S_OK, "GetContainerFormats failed, hr=%x\n", hr);
+ ok(count == 1, "unexpected count %d\n", count);
+
+ count = 0xdeadbeef;
+ hr = IWICMetadataReaderInfo_GetContainerFormats(reader_info, 10, container_formats, &count);
+ ok(hr == S_OK, "GetContainerFormats failed, hr=%x\n", hr);
+ ok(count == min(count, 10), "unexpected count %d\n", count);
+
+ count = size = 0xdeadbeef;
+ hr = IWICMetadataReaderInfo_GetPatterns(reader_info, &GUID_ContainerFormatPng,
+ 0, NULL, &count, &size);
+ ok(hr == WINCODEC_ERR_COMPONENTNOTFOUND || broken(hr == S_OK) /* Windows XP */,
+ "GetPatterns failed, hr=%x\n", hr);
+ ok(count == 0xdeadbeef, "unexpected count %d\n", count);
+ ok(size == 0xdeadbeef, "unexpected size %d\n", size);
+
+ count = size = 0xdeadbeef;
+ hr = IWICMetadataReaderInfo_GetPatterns(reader_info, &GUID_MetadataFormatXMP,
+ 0, NULL, &count, &size);
+ ok(hr == S_OK, "GetPatterns failed, hr=%x\n", hr);
+ ok(count == 1, "unexpected count %d\n", count);
+ ok(size > sizeof(WICMetadataPattern), "unexpected size %d\n", size);
+
+ if (hr == S_OK)
+ {
+ patterns = HeapAlloc(GetProcessHeap(), 0, size);
+
+ count = size = 0xdeadbeef;
+ hr = IWICMetadataReaderInfo_GetPatterns(reader_info, &GUID_MetadataFormatXMP,
+ size-1, patterns, &count, &size);
+ ok(hr == S_OK, "GetPatterns failed, hr=%x\n", hr);
+ ok(count == 1, "unexpected count %d\n", count);
+ ok(size > sizeof(WICMetadataPattern), "unexpected size %d\n", size);
+
+ count = size = 0xdeadbeef;
+ hr = IWICMetadataReaderInfo_GetPatterns(reader_info, &GUID_MetadataFormatXMP,
+ size, patterns, &count, &size);
+ ok(hr == S_OK, "GetPatterns failed, hr=%x\n", hr);
+ ok(count == 1, "unexpected count %d\n", count);
+ ok(size == sizeof(WICMetadataPattern) + patterns->Length * 2, "unexpected size %d\n", size);
+
+ HeapFree(GetProcessHeap(), 0, patterns);
+ }
+
+ IWICMetadataReaderInfo_Release(reader_info);
+
+ IWICComponentInfo_Release(info);
+
+ IWICImagingFactory_Release(factory);
+}
+
START_TEST(info)
{
CoInitializeEx(NULL, COINIT_APARTMENTTHREADED);
test_decoder_info();
+ test_reader_info();
CoUninitialize();
}
diff --git a/include/wincodecsdk.idl b/include/wincodecsdk.idl
index e39b99b..0a8a531 100644
--- a/include/wincodecsdk.idl
+++ b/include/wincodecsdk.idl
@@ -40,6 +40,8 @@ cpp_quote("DEFINE_GUID(GUID_MetadataFormatChunktEXt, 0x568d8936,0xc0a9,0x4923,0x
cpp_quote("DEFINE_GUID(GUID_MetadataFormatChunktIME, 0x6b00ae2d,0xe24b,0x460a,0x98,0xb6,0x87,0x8b,0xd0,0x30,0x72,0xfd);")
cpp_quote("DEFINE_GUID(GUID_MetadataFormatIfd, 0x537396c6,0x2d8a,0x4bb6,0x9b,0xf8,0x2f,0x0a,0x8e,0x2a,0x3a,0xdf);")
cpp_quote("DEFINE_GUID(GUID_MetadataFormatExif, 0x1c3c4f9d,0xb84a,0x467d,0x94,0x93,0x36,0xcf,0xbd,0x59,0xea,0x57);")
+cpp_quote("DEFINE_GUID(GUID_MetadataFormatXMP, 0xbb5acc38,0xf216,0x4cec,0xa6,0xc5,0x5f,0x6e,0x73,0x97,0x63,0xa9);")
+cpp_quote("DEFINE_GUID(GUID_MetadataFormatXMPStruct, 0x22383cf1,0xed17,0x4e2e,0xaf,0x17,0xd8,0x5b,0x8f,0x6b,0x30,0xd0);")
cpp_quote("DEFINE_GUID(CLSID_WICUnknownMetadataReader, 0x699745c2,0x5066,0x4b82,0xa8,0xe3,0xd4,0x04,0x78,0xdb,0xec,0x8c);")
cpp_quote("DEFINE_GUID(CLSID_WICUnknownMetadataWriter, 0xa09cca86,0x27ba,0x4f39,0x90,0x53,0x12,0x1f,0xa4,0xdc,0x08,0xfc);")
@@ -47,6 +49,7 @@ cpp_quote("DEFINE_GUID(CLSID_WICPngTextMetadataReader, 0x4b59afcc,0xb8c3,0x408a,
cpp_quote("DEFINE_GUID(CLSID_WICPngTextMetadataWriter, 0xb5ebafb9,0x253e,0x4a72,0xa7,0x44,0x07,0x62,0xd2,0x68,0x56,0x83);")
cpp_quote("DEFINE_GUID(CLSID_WICIfdMetadataReader, 0x8f914656,0x9d0a,0x4eb2,0x90,0x19,0x0b,0xf9,0x6d,0x8a,0x9e,0xe6);")
cpp_quote("DEFINE_GUID(CLSID_WICExifMetadataReader, 0xd9403860,0x297f,0x4a49,0xbf,0x9b,0x77,0x89,0x81,0x50,0xa4,0x42);")
+cpp_quote("DEFINE_GUID(CLSID_WICXMBStructMetadataReader, 0x01b90d9a,0x8209,0x47f7,0x9c,0x52,0xe1,0x24,0x4b,0xf5,0x0c,0xed);")
typedef struct WICMetadataPattern {
ULARGE_INTEGER Position;
--
1.7.9.5
More information about the wine-patches
mailing list