aboutsummaryrefslogtreecommitdiffhomepage
path: root/tests
diff options
context:
space:
mode:
authorGravatar halcanary <halcanary@google.com>2014-08-12 08:04:58 -0700
committerGravatar Commit bot <commit-bot@chromium.org>2014-08-12 08:04:58 -0700
commit186f7b04956a1742f185a4ca69b44b52bc50e7fc (patch)
treeebbde0eb4c32e2aa13e60ef3afdda2c73e10f457 /tests
parent5e27e0eb1d1d4c7674e221d3ba3314500ea0b97a (diff)
SkImage::NewFromGenerator(SkImageGenerator*), and a unit test.
R=reed@google.com Author: halcanary@google.com Review URL: https://codereview.chromium.org/465823003
Diffstat (limited to 'tests')
-rw-r--r--tests/CachedDecodingPixelRefTest.cpp39
1 files changed, 39 insertions, 0 deletions
diff --git a/tests/CachedDecodingPixelRefTest.cpp b/tests/CachedDecodingPixelRefTest.cpp
index 8de7da79a2..b409987392 100644
--- a/tests/CachedDecodingPixelRefTest.cpp
+++ b/tests/CachedDecodingPixelRefTest.cpp
@@ -322,3 +322,42 @@ DEF_TEST(DiscardableAndCachingPixelRef, reporter) {
check_pixelref(TestImageGenerator::kSucceedGetPixels_TestType,
reporter, kSkDiscardable_PixelRefType, globalPool);
}
+
+////////////////////////////////////////////////////////////////////////////////
+
+DEF_TEST(Image_NewFromGenerator, r) {
+ TestImageGenerator::TestType testTypes[] = {
+ TestImageGenerator::kFailGetInfo_TestType,
+ TestImageGenerator::kFailGetPixels_TestType,
+ TestImageGenerator::kSucceedGetPixels_TestType,
+ };
+ for (size_t i = 0; i < SK_ARRAY_COUNT(testTypes); ++i) {
+ TestImageGenerator::TestType test = testTypes[i];
+ SkImageGenerator* gen = SkNEW_ARGS(TestImageGenerator, (test, r));
+ SkAutoTUnref<SkImage> image(SkImage::NewFromGenerator(gen));
+ if (TestImageGenerator::kFailGetInfo_TestType == test) {
+ REPORTER_ASSERT(r, NULL == image.get());
+ continue;
+ }
+ if (NULL == image.get()) {
+ ERRORF(r, "SkImage::NewFromGenerator unexpecedly failed ["
+ SK_SIZE_T_SPECIFIER "]", i);
+ continue;
+ }
+ REPORTER_ASSERT(r, TestImageGenerator::Width() == image->width());
+ REPORTER_ASSERT(r, TestImageGenerator::Height() == image->height());
+
+ SkBitmap bitmap;
+ SkAssertResult(bitmap.allocN32Pixels(TestImageGenerator::Width(),
+ TestImageGenerator::Height()));
+ SkCanvas canvas(bitmap);
+ canvas.clear(SK_ColorMAGENTA);
+ image->draw(&canvas, 0, 0, NULL);
+ SkColor color = bitmap.getColor(0, 0);
+ if (TestImageGenerator::kSucceedGetPixels_TestType == test) {
+ REPORTER_ASSERT(r, TestImageGenerator::Color() == color);
+ } else {
+ REPORTER_ASSERT(r, SK_ColorMAGENTA == color);
+ }
+ }
+}