Index: skia/ext/analysis_canvas_unittest.cc |
diff --git a/skia/ext/analysis_canvas_unittest.cc b/skia/ext/analysis_canvas_unittest.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..f8ce26c1ce39ebfb33f698de2537d0ebc7b8b5db |
--- /dev/null |
+++ b/skia/ext/analysis_canvas_unittest.cc |
@@ -0,0 +1,191 @@ |
+// Copyright 2013 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 "base/compiler_specific.h" |
+#include "skia/ext/analysis_canvas.h" |
+ |
+#include "testing/gtest/include/gtest/gtest.h" |
+ |
+namespace skia { |
+ |
+TEST(AnalysisCanvasTest, EmptyCanvas) { |
+ SkBitmap emptyBitmap; |
+ emptyBitmap.setConfig(SkBitmap::kNo_Config, 255, 255); |
+ skia::AnalysisDevice device(emptyBitmap); |
+ skia::AnalysisCanvas canvas(&device); |
+ |
+ SkColor color; |
+ EXPECT_FALSE(canvas.getColorIfSolid(&color)); |
+ EXPECT_FALSE(canvas.isTransparent()); |
+ EXPECT_TRUE(canvas.isCheap()); |
+} |
+ |
+TEST(AnalysisCanvasTest, ClearCanvas) { |
+ SkBitmap emptyBitmap; |
+ emptyBitmap.setConfig(SkBitmap::kNo_Config, 255, 255); |
+ skia::AnalysisDevice device(emptyBitmap); |
+ skia::AnalysisCanvas canvas(&device); |
+ |
+ // Transparent color |
+ SkColor color = SkColorSetARGB(0, 12, 34, 56); |
+ canvas.clear(color); |
+ |
+ SkColor outputColor; |
+ EXPECT_FALSE(canvas.getColorIfSolid(&outputColor)); |
+ EXPECT_TRUE(canvas.isTransparent()); |
+ EXPECT_TRUE(canvas.isCheap()); |
+ |
+ // Solid color |
+ color = SkColorSetARGB(255, 65, 43, 21); |
+ canvas.clear(color); |
+ |
+ EXPECT_TRUE(canvas.getColorIfSolid(&outputColor)); |
+ EXPECT_FALSE(canvas.isTransparent()); |
+ EXPECT_TRUE(canvas.isCheap()); |
+ EXPECT_EQ(outputColor, color); |
+ |
+ // Translucent color |
+ color = SkColorSetARGB(128, 11, 22, 33); |
+ canvas.clear(color); |
+ |
+ EXPECT_FALSE(canvas.getColorIfSolid(&outputColor)); |
+ EXPECT_FALSE(canvas.isTransparent()); |
+ EXPECT_TRUE(canvas.isCheap()); |
+} |
+ |
+TEST(AnalysisCanvasTest, ComplexActions) { |
+ SkBitmap emptyBitmap; |
+ emptyBitmap.setConfig(SkBitmap::kNo_Config, 255, 255); |
+ skia::AnalysisDevice device(emptyBitmap); |
+ skia::AnalysisCanvas canvas(&device); |
+ |
+ // Draw paint test. |
+ SkColor color = SkColorSetARGB(255, 11, 22, 33); |
+ SkPaint paint; |
+ paint.setColor(color); |
+ |
+ canvas.drawPaint(paint); |
+ |
+ SkColor outputColor; |
+ EXPECT_FALSE(canvas.getColorIfSolid(&outputColor)); |
Justin Novosad
2013/03/06 14:59:48
Since you intend to come back to this later, you s
|
+ EXPECT_FALSE(canvas.isTransparent()); |
+ EXPECT_TRUE(canvas.isCheap()); |
+ |
+ // Draw points test. |
+ SkPoint points[4] = { |
+ SkPoint::Make(0, 0), |
+ SkPoint::Make(255, 0), |
+ SkPoint::Make(255, 255), |
+ SkPoint::Make(0, 255) |
+ }; |
+ |
+ canvas.drawPoints(SkCanvas::kLines_PointMode, 4, points, paint); |
Justin Novosad
2013/03/06 14:59:48
This is not a very effective test because you are
|
+ |
+ EXPECT_FALSE(canvas.getColorIfSolid(&outputColor)); |
+ EXPECT_FALSE(canvas.isTransparent()); |
+ EXPECT_TRUE(canvas.isCheap()); |
+ |
+ // Draw oval test. |
+ canvas.drawOval(SkRect::MakeWH(255, 255), paint); |
+ |
+ EXPECT_FALSE(canvas.getColorIfSolid(&outputColor)); |
+ EXPECT_FALSE(canvas.isTransparent()); |
+ EXPECT_TRUE(canvas.isCheap()); |
+ |
+ // Draw bitmap test. |
+ SkBitmap secondBitmap; |
+ emptyBitmap.setConfig(SkBitmap::kNo_Config, 255, 255); |
+ canvas.drawBitmap(secondBitmap, 0, 0); |
+ |
+ EXPECT_FALSE(canvas.getColorIfSolid(&outputColor)); |
+ EXPECT_FALSE(canvas.isTransparent()); |
+ EXPECT_TRUE(canvas.isCheap()); |
+} |
+ |
+TEST(AnalysisCanvasTest, SimpleDrawRect) { |
+ SkBitmap emptyBitmap; |
+ emptyBitmap.setConfig(SkBitmap::kNo_Config, 255, 255); |
+ skia::AnalysisDevice device(emptyBitmap); |
+ skia::AnalysisCanvas canvas(&device); |
+ |
+ SkColor color = SkColorSetARGB(255, 11, 22, 33); |
+ SkPaint paint; |
+ paint.setColor(color); |
+ canvas.clipRect(SkRect::MakeWH(255, 255)); |
+ canvas.drawRect(SkRect::MakeWH(255, 255), paint); |
+ |
+ SkColor outputColor; |
+ EXPECT_TRUE(canvas.getColorIfSolid(&outputColor)); |
+ EXPECT_FALSE(canvas.isTransparent()); |
+ EXPECT_TRUE(canvas.isCheap()); |
+ EXPECT_EQ(color, outputColor); |
+ |
+ color = SkColorSetARGB(255, 22, 33, 44); |
+ paint.setColor(color); |
+ canvas.translate(-128, -128); |
+ canvas.drawRect(SkRect::MakeWH(382, 382), paint); |
+ |
+ EXPECT_FALSE(canvas.getColorIfSolid(&outputColor)); |
+ EXPECT_FALSE(canvas.isTransparent()); |
+ EXPECT_TRUE(canvas.isCheap()); |
+ |
+ color = SkColorSetARGB(255, 33, 44, 55); |
+ paint.setColor(color); |
+ canvas.drawRect(SkRect::MakeWH(383, 383), paint); |
+ |
+ EXPECT_TRUE(canvas.getColorIfSolid(&outputColor)); |
+ EXPECT_FALSE(canvas.isTransparent()); |
+ EXPECT_TRUE(canvas.isCheap()); |
+ EXPECT_EQ(color, outputColor); |
+ |
+ color = SkColorSetARGB(0, 0, 0, 0); |
+ paint.setColor(color); |
+ canvas.drawRect(SkRect::MakeWH(383, 383), paint); |
+ |
+ EXPECT_TRUE(canvas.getColorIfSolid(&outputColor)); |
+ EXPECT_FALSE(canvas.isTransparent()); |
+ EXPECT_TRUE(canvas.isCheap()); |
+ EXPECT_EQ(outputColor, SkColorSetARGB(255, 33, 44, 55)); |
+ |
+ color = SkColorSetARGB(128, 128, 128, 128); |
+ paint.setColor(color); |
+ canvas.drawRect(SkRect::MakeWH(383, 383), paint); |
+ |
+ EXPECT_FALSE(canvas.getColorIfSolid(&outputColor)); |
+ EXPECT_FALSE(canvas.isTransparent()); |
+ EXPECT_TRUE(canvas.isCheap()); |
+ |
+ paint.setXfermodeMode(SkXfermode::kClear_Mode); |
Justin Novosad
2013/03/06 14:59:48
Should also have a similar test that creates a tra
|
+ canvas.drawRect(SkRect::MakeWH(382, 382), paint); |
+ |
+ EXPECT_FALSE(canvas.getColorIfSolid(&outputColor)); |
+ EXPECT_FALSE(canvas.isTransparent()); |
+ EXPECT_TRUE(canvas.isCheap()); |
+ |
+ canvas.drawRect(SkRect::MakeWH(383, 383), paint); |
+ |
+ EXPECT_FALSE(canvas.getColorIfSolid(&outputColor)); |
+ EXPECT_TRUE(canvas.isTransparent()); |
+ EXPECT_TRUE(canvas.isCheap()); |
+ |
+ canvas.translate(128, 128); |
+ color = SkColorSetARGB(255, 11, 22, 33); |
+ paint.setColor(color); |
+ paint.setXfermodeMode(SkXfermode::kSrcOver_Mode); |
+ canvas.drawRect(SkRect::MakeWH(255, 255), paint); |
+ |
+ EXPECT_TRUE(canvas.getColorIfSolid(&outputColor)); |
+ EXPECT_FALSE(canvas.isTransparent()); |
+ EXPECT_TRUE(canvas.isCheap()); |
+ EXPECT_EQ(color, outputColor); |
+ |
+ canvas.rotate(50); |
Justin Novosad
2013/03/06 14:59:48
Glad to see this covered.
|
+ canvas.drawRect(SkRect::MakeWH(255, 255), paint); |
+ |
+ EXPECT_FALSE(canvas.getColorIfSolid(&outputColor)); |
+ EXPECT_FALSE(canvas.isTransparent()); |
+ EXPECT_TRUE(canvas.isCheap()); |
+} |
+ |
+} // namespace skia |