add test for premultiplycolor
authorreed@google.com <reed@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>
Fri, 22 Apr 2011 19:18:20 +0000 (19:18 +0000)
committerreed@google.com <reed@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>
Fri, 22 Apr 2011 19:18:20 +0000 (19:18 +0000)
git-svn-id: http://skia.googlecode.com/svn/trunk@1167 2bbb7eff-a529-9590-31e7-b0007b416f81

tests/ColorTest.cpp [new file with mode: 0644]
tests/tests_files.mk

diff --git a/tests/ColorTest.cpp b/tests/ColorTest.cpp
new file mode 100644 (file)
index 0000000..c10897f
--- /dev/null
@@ -0,0 +1,27 @@
+#include "Test.h"
+#include "SkColor.h"
+#include "SkUnPreMultiply.h"
+
+static void test_premul(skiatest::Reporter* reporter) {
+    for (int a = 0; a <= 255; a++) {
+        for (int x = 0; x <= 255; x++) {
+            SkColor c0 = SkColorSetARGB(a, x, x, x);
+            SkPMColor p0 = SkPreMultiplyColor(c0);
+
+            SkColor c1 = SkUnPreMultiply::PMColorToColor(p0);
+            SkPMColor p1 = SkPreMultiplyColor(c1);
+
+            // we can't promise that c0 == c1, since c0 -> p0 is a many to one
+            // function, however, we can promise that p0 -> c1 -> p1 : p0 == p1
+            REPORTER_ASSERT(reporter, p0 == p1);
+        }
+    }
+}
+
+
+static void TestColor(skiatest::Reporter* reporter) {
+    test_premul(reporter);
+}
+
+#include "TestClassDef.h"
+DEFINE_TESTCLASS("Color", ColorTestClass, TestColor)
index f78481a..28d5fe7 100644 (file)
@@ -7,6 +7,7 @@ SOURCE := \
     ClipStackTest.cpp \
     ClipperTest.cpp \
     ColorFilterTest.cpp \
+    ColorTest.cpp \
     DequeTest.cpp \
     DrawBitmapRectTest.cpp \
     FillPathTest.cpp \