Chromium Code Reviews| 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 |