diff options
author | halcanary <halcanary@google.com> | 2014-08-12 08:04:58 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2014-08-12 08:04:58 -0700 |
commit | 186f7b04956a1742f185a4ca69b44b52bc50e7fc (patch) | |
tree | ebbde0eb4c32e2aa13e60ef3afdda2c73e10f457 /tests | |
parent | 5e27e0eb1d1d4c7674e221d3ba3314500ea0b97a (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.cpp | 39 |
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); + } + } +} |