Ziqing Hui : windowscodecs: Add tests for DDS encoder.
Alexandre Julliard
julliard at winehq.org
Mon May 3 16:37:04 CDT 2021
Module: wine
Branch: master
Commit: 7eae1c8b434eb2d111ac6df2250ef22df103b7e6
URL: https://source.winehq.org/git/wine.git/?a=commit;h=7eae1c8b434eb2d111ac6df2250ef22df103b7e6
Author: Ziqing Hui <zhui at codeweavers.com>
Date: Sat May 1 11:14:34 2021 +0800
windowscodecs: Add tests for DDS encoder.
Signed-off-by: Ziqing Hui <zhui at codeweavers.com>
Signed-off-by: Esme Povirk <esme at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
dlls/windowscodecs/tests/ddsformat.c | 89 ++++++++++++++++++++++++++++++++++++
1 file changed, 89 insertions(+)
diff --git a/dlls/windowscodecs/tests/ddsformat.c b/dlls/windowscodecs/tests/ddsformat.c
index 28554e77c9b..492416c0ce4 100644
--- a/dlls/windowscodecs/tests/ddsformat.c
+++ b/dlls/windowscodecs/tests/ddsformat.c
@@ -500,6 +500,31 @@ static IWICBitmapDecoder *create_decoder(void)
return decoder;
}
+static IWICBitmapEncoder *create_encoder(void)
+{
+ IWICBitmapEncoder *encoder = NULL;
+ GUID guidresult;
+ HRESULT hr;
+
+ hr = CoCreateInstance(&CLSID_WICDdsEncoder, NULL, CLSCTX_INPROC_SERVER,
+ &IID_IWICBitmapEncoder, (void **)&encoder);
+ if (hr != S_OK)
+ {
+ win_skip("DDS encoder is not supported\n");
+ return NULL;
+ }
+
+ memset(&guidresult, 0, sizeof(guidresult));
+
+ hr = IWICBitmapEncoder_GetContainerFormat(encoder, &guidresult);
+ ok(hr == S_OK, "GetContainerFormat failed, hr %#x\n", hr);
+
+ ok(IsEqualGUID(&guidresult, &GUID_ContainerFormatDds),
+ "Got unexpected container format %s\n", debugstr_guid(&guidresult));
+
+ return encoder;
+}
+
static HRESULT init_decoder(IWICBitmapDecoder *decoder, IWICStream *stream, HRESULT expected, int index, BOOL wine_init)
{
HRESULT hr;
@@ -1231,6 +1256,69 @@ static void test_dds_decoder(void)
}
}
+static void test_dds_encoder_initialize(void)
+{
+ IWICBitmapEncoder *encoder = NULL;
+ IWICStream *stream = NULL;
+ BYTE buffer[1];
+ HRESULT hr;
+
+ encoder = create_encoder();
+ if (!encoder) goto end;
+
+ stream = create_stream(buffer, sizeof(buffer));
+ if (!stream) goto end;
+
+ /* initialize with invalid cache option */
+
+ hr = IWICBitmapEncoder_Initialize(encoder, (IStream *)stream, 0xdeadbeef);
+ todo_wine
+ ok(hr == WINCODEC_ERR_UNSUPPORTEDOPERATION, "Initialize got unexpected hr %#x\n", hr);
+
+ hr = IWICBitmapEncoder_Initialize(encoder, (IStream *)stream, WICBitmapEncoderNoCache);
+ todo_wine
+ ok(hr == E_INVALIDARG, "Initialize got unexpected hr %#x\n", hr);
+
+ IWICBitmapEncoder_Release(encoder);
+
+ /* initialize with null stream */
+
+ encoder = create_encoder();
+ if (!encoder) goto end;
+
+ hr = IWICBitmapEncoder_Initialize(encoder, NULL, WICBitmapEncoderNoCache);
+ todo_wine
+ ok(hr == E_INVALIDARG, "Initialize got unexpected hr %#x\n", hr);
+
+ hr = IWICBitmapEncoder_Initialize(encoder, (IStream *)stream, WICBitmapEncoderNoCache);
+ todo_wine
+ ok(hr == S_OK, "Initialize failed, hr %#x\n", hr);
+
+ IWICBitmapEncoder_Release(encoder);
+
+ /* regularly initialize */
+
+ encoder = create_encoder();
+ if (!encoder) goto end;
+
+ hr = IWICBitmapEncoder_Initialize(encoder, (IStream *)stream, WICBitmapEncoderNoCache);
+ todo_wine
+ ok(hr == S_OK, "Initialize failed, hr %#x\n", hr);
+
+ hr = IWICBitmapEncoder_Initialize(encoder, (IStream *)stream, WICBitmapEncoderNoCache);
+ todo_wine
+ ok(hr == WINCODEC_ERR_WRONGSTATE, "Initialize got unexpected hr %#x\n", hr);
+
+end:
+ if (stream) IWICStream_Release(stream);
+ if (encoder) IWICBitmapEncoder_Release(encoder);
+}
+
+static void test_dds_encoder(void)
+{
+ test_dds_encoder_initialize();
+}
+
START_TEST(ddsformat)
{
HRESULT hr;
@@ -1242,6 +1330,7 @@ START_TEST(ddsformat)
if (hr != S_OK) goto end;
test_dds_decoder();
+ test_dds_encoder();
end:
if (factory) IWICImagingFactory_Release(factory);
More information about the wine-cvs
mailing list