Module: wine Branch: master Commit: 64c7d59ee98f5c613ba96f19e1974cb71906d932 URL: https://source.winehq.org/git/wine.git/?a=commit;h=64c7d59ee98f5c613ba96f19e...
Author: Ziqing Hui zhui@codeweavers.com Date: Tue Aug 25 22:01:56 2020 +0800
windowscodecs/tests: Add CopyPixels data tests for uncompressed images.
Signed-off-by: Ziqing Hui zhui@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/windowscodecs/tests/ddsformat.c | 34 ++++++++++++++++++++++------------ 1 file changed, 22 insertions(+), 12 deletions(-)
diff --git a/dlls/windowscodecs/tests/ddsformat.c b/dlls/windowscodecs/tests/ddsformat.c index 11d661ba7d..1a7ef95ada 100644 --- a/dlls/windowscodecs/tests/ddsformat.c +++ b/dlls/windowscodecs/tests/ddsformat.c @@ -943,8 +943,7 @@ static void test_dds_decoder_frame_data(IWICBitmapFrameDecode* frame, IWICDdsFra WICDdsFormatInfo format_info; WICRect rect = { 0, 0, 1, 1 }, rect_test_a = { 0, 0, 0, 0 }, rect_test_b = { 0, 0, 0xdeadbeaf, 0xdeadbeaf }; WICRect rect_test_c = { -0xdeadbeaf, -0xdeadbeaf, 1, 1 }, rect_test_d = { 0xdeadbeaf, 0xdeadbeaf, 1, 1 }; - BYTE buffer[2048]; - DWORD pixels[2048]; + BYTE buffer[2048], pixels[2048]; UINT stride, frame_stride, frame_size, frame_width, frame_height, width_in_blocks, height_in_blocks, bpp; UINT width, height, depth, array_index; UINT block_offset; @@ -1106,23 +1105,34 @@ static void test_dds_decoder_frame_data(IWICBitmapFrameDecode* frame, IWICDdsFra ok(hr == E_INVALIDARG, "Test %u, frame %u: CopyBlocks got unexpected hr %#x\n", i, frame_index, hr);
if (is_compressed(format_info.DxgiFormat)) { - decode_block(test_data[i].data + block_offset, width_in_blocks * height_in_blocks, - format_info.DxgiFormat, frame_width, frame_height, pixels); + format_info.DxgiFormat, frame_width, frame_height, (DWORD *)pixels); + } else { + memcpy(pixels, test_data[i].data + block_offset, frame_size); + }
- hr = IWICBitmapFrameDecode_CopyPixels(frame, &rect, stride, sizeof(buffer), buffer); - ok(hr == S_OK, "Test %u, frame %u: CopyPixels failed, hr %#x\n", i, frame_index, hr); - if (hr == S_OK) { + hr = IWICBitmapFrameDecode_CopyPixels(frame, &rect, stride, sizeof(buffer), buffer); + ok(hr == S_OK, "Test %u, frame %u: CopyPixels failed, hr %#x\n", i, frame_index, hr); + if (hr == S_OK) { + if (is_compressed(format_info.DxgiFormat)) { ok(color_buffer_match((DWORD *)pixels, (DWORD *)buffer, 1), "Test %u, frame %u: Pixels mismatch\n", i, frame_index); + } else { + ok(!strncmp((const char *)pixels, (const char *)buffer, bpp / 8), + "Test %u, frame %u: Pixels mismatch\n", i, frame_index); } + }
- hr = IWICBitmapFrameDecode_CopyPixels(frame, NULL, frame_stride, sizeof(buffer), buffer); - ok(hr == S_OK, "Test %u, frame %u: CopyPixels failed, hr %#x\n", i, frame_index, hr); - if (hr == S_OK) { + hr = IWICBitmapFrameDecode_CopyPixels(frame, NULL, frame_stride, sizeof(buffer), buffer); + ok(hr == S_OK, "Test %u, frame %u: CopyPixels failed, hr %#x\n", i, frame_index, hr); + if (hr == S_OK) { + if (is_compressed(format_info.DxgiFormat)) { ok(color_buffer_match((DWORD *)pixels, (DWORD *)buffer, frame_size / (bpp / 8)), - "Test %u, frame %u: Pixels mismatch\n", i, frame_index); - } + "Test %u, frame %u: Pixels mismatch\n", i, frame_index); + } else { + ok(!strncmp((const char *)pixels, (const char *)buffer, frame_size), + "Test %u, frame %u: Pixels mismatch\n", i, frame_index); + }; } }