Index: third_party/WebKit/Source/platform/graphics/gpu/WebGLImageConversionTest.cpp |
diff --git a/third_party/WebKit/Source/platform/graphics/gpu/WebGLImageConversionTest.cpp b/third_party/WebKit/Source/platform/graphics/gpu/WebGLImageConversionTest.cpp |
new file mode 100644 |
index 0000000000000000000000000000000000000000..05d4851e971c516e7c48a7d401f3ea62d50ec724 |
--- /dev/null |
+++ b/third_party/WebKit/Source/platform/graphics/gpu/WebGLImageConversionTest.cpp |
@@ -0,0 +1,116 @@ |
+// Copyright 2016 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#include "platform/graphics/gpu/WebGLImageConversion.h" |
+ |
+#include "testing/gtest/include/gtest/gtest.h" |
+ |
+namespace blink { |
+ |
+class WebGLImageConversionTest : public testing::Test { |
+protected: |
+ void unpackPixels( |
+ const uint16_t* sourceData, |
+ WebGLImageConversion::DataFormat sourceDataFormat, |
+ unsigned pixelsPerRow, |
+ uint8_t* destinationData) |
+ { |
+ WebGLImageConversion::unpackPixels(sourceData, sourceDataFormat, pixelsPerRow, destinationData); |
+ } |
+ void packPixels( |
+ const uint8_t* sourceData, |
+ WebGLImageConversion::DataFormat sourceDataFormat, |
+ unsigned pixelsPerRow, |
+ uint8_t* destinationData) |
+ { |
+ WebGLImageConversion::packPixels(sourceData, sourceDataFormat, pixelsPerRow, destinationData); |
+ } |
+}; |
+ |
+TEST_F(WebGLImageConversionTest, ConvertRGBA4444toRGBA8) |
+{ |
+ uint16_t sourceData[9] = { 0x1234, 0x3456, 0x1234, 0x3456, 0x1234, 0x3456, 0x1234, 0x3456, 0x1234 }; |
+ uint8_t expectedData[36] = { 0x11, 0x22, 0x33, 0x44, 0x33, 0x44, 0x55, 0x66, 0x11, 0x22, 0x33, 0x44, 0x33, 0x44, 0x55, 0x66, 0x11, 0x22, 0x33, 0x44, 0x33, 0x44, 0x55, 0x66, 0x11, 0x22, 0x33, 0x44, 0x33, 0x44, 0x55, 0x66, 0x11, 0x22, 0x33, 0x44 }; |
+ uint8_t destinationData[36]; |
+ unpackPixels(sourceData, WebGLImageConversion::DataFormatRGBA4444, 9, destinationData); |
+ EXPECT_EQ(0, memcmp(expectedData, destinationData, sizeof(destinationData))); |
+} |
+ |
+TEST_F(WebGLImageConversionTest, ConvertRGBA5551toRGBA8) |
+{ |
+ uint16_t sourceData[9] = { 0x1234, 0x3456, 0x1234, 0x3456, 0x1234, 0x3456, 0x1234, 0x3456, 0x1234 }; |
+ uint8_t expectedData[36] = { 0x12, 0x40, 0xd2, 0x0, 0x36, 0x89, 0x5b, 0x0, 0x12, 0x40, 0xd2, 0x0, 0x36, 0x89, 0x5b, 0x0, 0x12, 0x40, 0xd2, 0x0, 0x36, 0x89, 0x5b, 0x0, 0x12, 0x40, 0xd2, 0x0, 0x36, 0x89, 0x5b, 0x0, 0x12, 0x40, 0xd2, 0x0 }; |
+ uint8_t destinationData[36]; |
+ unpackPixels(sourceData, WebGLImageConversion::DataFormatRGBA5551, 9, destinationData); |
+ EXPECT_EQ(0, memcmp(expectedData, destinationData, sizeof(destinationData))); |
+} |
+ |
+TEST_F(WebGLImageConversionTest, ConvertRGBA8toRA8) |
+{ |
+ uint8_t sourceData[40] = { 0x34, 0x56, 0x34, 0x56, 0x34, 0x56, 0x34, 0x56, 0x34, 0x56, 0x34, 0x56, 0x34, 0x56, 0x34, 0x56, 0x34, 0x56, 0x34, 0x56, 0x34, 0x56, 0x34, 0x56, 0x34, 0x56, 0x34, 0x56, 0x34, 0x56, 0x34, 0x56, 0x34, 0x56, 0x34, 0x56, 0x34, 0x56, 0x34, 0x56 }; |
+ uint8_t expectedData[20] = { 0x9a, 0x56, 0x9a, 0x56, 0x9a, 0x56, 0x9a, 0x56, 0x9a, 0x56, 0x9a, 0x56, 0x9a, 0x56, 0x9a, 0x56, 0x9a, 0x56, 0x9a, 0x56 }; |
+ uint8_t destinationData[20]; |
+ packPixels(sourceData, WebGLImageConversion::DataFormatRA8, 10, destinationData); |
+ EXPECT_EQ(0, memcmp(expectedData, destinationData, sizeof(destinationData))); |
+} |
+ |
+TEST_F(WebGLImageConversionTest, convertBGRA8toRGBA8) |
+{ |
+ uint32_t sourceData[9] = { 0x12345678, 0x34567888, 0x12345678, 0x34567888, 0x12345678, 0x34567888, 0x12345678, 0x34567888, 0x12345678 }; |
+#if CPU(BIG_ENDIAN) |
+ uint32_t expectedData[9] = { 0x56341278, 0x78563488, 0x56341278, 0x78563488, 0x56341278, 0x78563488, 0x56341278, 0x78563488, 0x56341278 }; |
+#else |
+ uint32_t expectedData[9] = { 0x12785634, 0x34887856, 0x12785634, 0x34887856, 0x12785634, 0x34887856, 0x12785634, 0x34887856, 0x12785634 }; |
+#endif |
+ uint32_t destinationData[9]; |
+ unpackPixels(reinterpret_cast<uint16_t*>(&sourceData[0]), WebGLImageConversion::DataFormatBGRA8, 9, reinterpret_cast<uint8_t*>(&destinationData[0])); |
+ EXPECT_EQ(0, memcmp(expectedData, destinationData, sizeof(destinationData))); |
+} |
+ |
+TEST_F(WebGLImageConversionTest, ConvertRGBA8toR8) |
+{ |
+ uint8_t sourceData[40] = { 0x34, 0x56, 0x34, 0x56, 0x34, 0x56, 0x34, 0x56, 0x34, 0x56, 0x34, 0x56, 0x34, 0x56, 0x34, 0x56, 0x34, 0x56, 0x34, 0x56, 0x34, 0x56, 0x34, 0x56, 0x34, 0x56, 0x34, 0x56, 0x34, 0x56, 0x34, 0x56, 0x34, 0x56, 0x34, 0x56, 0x34, 0x56, 0x34, 0x56 }; |
+ uint8_t expectedData[10] = { 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a }; |
+ uint8_t destinationData[10]; |
+ packPixels(sourceData, WebGLImageConversion::DataFormatR8, 10, destinationData); |
+ EXPECT_EQ(0, memcmp(expectedData, destinationData, sizeof(destinationData))); |
+} |
+ |
+TEST_F(WebGLImageConversionTest, ConvertRGBA8toRGBA8) |
+{ |
+ uint8_t sourceData[40] = { 0x34, 0x56, 0x34, 0x56, 0x34, 0x56, 0x34, 0x56, 0x34, 0x56, 0x34, 0x56, 0x34, 0x56, 0x34, 0x56, 0x34, 0x56, 0x34, 0x56, 0x34, 0x56, 0x34, 0x56, 0x34, 0x56, 0x34, 0x56, 0x34, 0x56, 0x34, 0x56, 0x34, 0x56, 0x34, 0x56, 0x34, 0x56, 0x34, 0x56 }; |
+ uint8_t expectedData[40] = { 0x9a, 0xff, 0x9a, 0x56, 0x9a, 0xff, 0x9a, 0x56, 0x9a, 0xff, 0x9a, 0x56, 0x9a, 0xff, 0x9a, 0x56, 0x9a, 0xff, 0x9a, 0x56, 0x9a, 0xff, 0x9a, 0x56, 0x9a, 0xff, 0x9a, 0x56, 0x9a, 0xff, 0x9a, 0x56, 0x9a, 0xff, 0x9a, 0x56, 0x9a, 0xff, 0x9a, 0x56 }; |
+ uint8_t destinationData[40]; |
+ packPixels(sourceData, WebGLImageConversion::DataFormatRGBA8, 10, destinationData); |
+ EXPECT_EQ(0, memcmp(expectedData, destinationData, sizeof(destinationData))); |
+} |
+ |
+TEST_F(WebGLImageConversionTest, ConvertRGBA8ToUnsignedShort4444) |
+{ |
+ uint8_t sourceData[40] = { 0x34, 0x56, 0x34, 0x56, 0x34, 0x56, 0x34, 0x56, 0x34, 0x56, 0x34, 0x56, 0x34, 0x56, 0x34, 0x56, 0x34, 0x56, 0x34, 0x56, 0x34, 0x56, 0x34, 0x56, 0x34, 0x56, 0x34, 0x56, 0x34, 0x56, 0x34, 0x56, 0x34, 0x56, 0x34, 0x56, 0x34, 0x56, 0x34, 0x56 }; |
+ uint16_t expectedData[10] = { 0x3535, 0x3535, 0x3535, 0x3535, 0x3535, 0x3535, 0x3535, 0x3535, 0x3535, 0x3535 }; |
+ uint16_t destinationData[10]; |
+ packPixels(sourceData, WebGLImageConversion::DataFormatRGBA4444, 10, reinterpret_cast<uint8_t*>(&destinationData[0])); |
+ EXPECT_EQ(0, memcmp(expectedData, destinationData, sizeof(destinationData))); |
+} |
+ |
+TEST_F(WebGLImageConversionTest, ConvertRGBA8ToRGBA5551) |
+{ |
+ uint8_t sourceData[40] = { 0x34, 0x56, 0x34, 0x56, 0x34, 0x56, 0x34, 0x56, 0x34, 0x56, 0x34, 0x56, 0x34, 0x56, 0x34, 0x56, 0x34, 0x56, 0x34, 0x56, 0x34, 0x56, 0x34, 0x56, 0x34, 0x56, 0x34, 0x56, 0x34, 0x56, 0x34, 0x56, 0x34, 0x56, 0x34, 0x56, 0x34, 0x56, 0x34, 0x56 }; |
+ uint16_t expectedData[10] = { 0x328c, 0x328c, 0x328c, 0x328c, 0x328c, 0x328c, 0x328c, 0x328c, 0x328c, 0x328c }; |
+ uint16_t destinationData[10]; |
+ packPixels(sourceData, WebGLImageConversion::DataFormatRGBA5551, 10, reinterpret_cast<uint8_t*>(&destinationData[0])); |
+ EXPECT_EQ(0, memcmp(expectedData, destinationData, sizeof(destinationData))); |
+} |
+ |
+TEST_F(WebGLImageConversionTest, ConvertRGBA8ToRGB565) |
+{ |
+ uint8_t sourceData[40] = { 0x34, 0x56, 0x34, 0x56, 0x34, 0x56, 0x34, 0x56, 0x34, 0x56, 0x34, 0x56, 0x34, 0x56, 0x34, 0x56, 0x34, 0x56, 0x34, 0x56, 0x34, 0x56, 0x34, 0x56, 0x34, 0x56, 0x34, 0x56, 0x34, 0x56, 0x34, 0x56, 0x34, 0x56, 0x34, 0x56, 0x34, 0x56, 0x34, 0x56 }; |
+ uint16_t expectedData[10] = { 0x32a6, 0x32a6, 0x32a6, 0x32a6, 0x32a6, 0x32a6, 0x32a6, 0x32a6, 0x32a6, 0x32a6 }; |
+ uint16_t destinationData[10]; |
+ packPixels(sourceData, WebGLImageConversion::DataFormatRGB565, 10, reinterpret_cast<uint8_t*>(&destinationData[0])); |
+ EXPECT_EQ(0, memcmp(expectedData, destinationData, sizeof(destinationData))); |
+} |
+ |
+} // namespace blink |