From ea4673fde65f15d6f1ca77e24ced7348c4914517 Mon Sep 17 00:00:00 2001 From: halcanary Date: Mon, 18 Aug 2014 08:27:09 -0700 Subject: SkImage::NewFromGenerator(SkImageGenerator*), and a unit test. R=reed@google.com Author: halcanary@google.com Review URL: https://codereview.chromium.org/465823003 --- tests/CachedDecodingPixelRefTest.cpp | 42 +++++++++++++++++++++++++++++++++++- 1 file changed, 41 insertions(+), 1 deletion(-) (limited to 'tests/CachedDecodingPixelRefTest.cpp') diff --git a/tests/CachedDecodingPixelRefTest.cpp b/tests/CachedDecodingPixelRefTest.cpp index 8de7da79a2..e9ee622764 100644 --- a/tests/CachedDecodingPixelRefTest.cpp +++ b/tests/CachedDecodingPixelRefTest.cpp @@ -175,7 +175,7 @@ public: }; static int Width() { return 10; } static int Height() { return 10; } - static SkColor Color() { return SK_ColorCYAN; } + static uint32_t Color() { return 0xff123456; } TestImageGenerator(TestType type, skiatest::Reporter* reporter) : fType(type), fReporter(reporter) { SkASSERT((fType <= kLast_TestType) && (fType >= 0)); @@ -322,3 +322,43 @@ 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 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); + const SkColor kDefaultColor = 0xffabcdef; + canvas.clear(kDefaultColor); + image->draw(&canvas, 0, 0, NULL); + if (TestImageGenerator::kSucceedGetPixels_TestType == test) { + REPORTER_ASSERT( + r, TestImageGenerator::Color() == *bitmap.getAddr32(0, 0)); + } else { + REPORTER_ASSERT(r, kDefaultColor == bitmap.getColor(0,0)); + } + } +} -- cgit v1.2.3