Index: tests/CachedDecodingPixelRefTest.cpp |
diff --git a/tests/CachedDecodingPixelRefTest.cpp b/tests/CachedDecodingPixelRefTest.cpp |
index 8de7da79a252e54404cd64457dee387234b70f32..e9ee62276410bf1692133ef5ddf2d7b27ef92b83 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<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); |
+ 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)); |
+ } |
+ } |
+} |