Chromium Code Reviews| Index: tests/RecordTest.cpp |
| diff --git a/tests/RecordTest.cpp b/tests/RecordTest.cpp |
| index 96f3ad41e1a427c9c33e15708a73d057a97bb573..3d56f56ae00ba6fbe2bef82d5a8e4b8d2223da0b 100644 |
| --- a/tests/RecordTest.cpp |
| +++ b/tests/RecordTest.cpp |
| @@ -7,7 +7,11 @@ |
| #include "Test.h" |
| +#include "SkBitmap.h" |
| +#include "SkImageInfo.h" |
| +#include "SkShader.h" |
| #include "SkRecord.h" |
| +#include "SkRecordAnalysis.h" |
| #include "SkRecords.h" |
| // Sums the area of any DrawRect command it sees. |
| @@ -70,3 +74,37 @@ DEF_TEST(Record, r) { |
| summer.apply(record); |
| REPORTER_ASSERT(r, summer.area() == 500); |
| } |
| + |
| +DEF_TEST(RecordAnalysis, r) { |
| + SkRecord record; |
| + |
| + SkRect rect = SkRect::MakeWH(10, 10); |
| + SkPaint paint; |
| + SkNEW_PLACEMENT_ARGS(record.append<SkRecords::DrawRect>(), SkRecords::DrawRect, (paint, rect)); |
|
mtklein
2014/07/01 18:58:01
I find a macro like this helps keep things straigh
tomhudson
2014/07/02 15:25:41
MMV - feels like a break-even in this instance.
Do
|
| + REPORTER_ASSERT(r, !SkRecordWillPlaybackBitmaps(record)); |
| + |
| + SkBitmap bitmap; |
| + SkNEW_PLACEMENT_ARGS(record.append<SkRecords::DrawBitmap>(), SkRecords::DrawBitmap, |
| + (&paint, bitmap, 0.0f, 0.0f)); |
| + REPORTER_ASSERT(r, SkRecordWillPlaybackBitmaps(record)); |
| + |
| + SkNEW_PLACEMENT_ARGS(record.replace<SkRecords::DrawRect>(1), |
| + SkRecords::DrawRect, (paint, rect)); |
| + REPORTER_ASSERT(r, !SkRecordWillPlaybackBitmaps(record)); |
| + |
| + SkPaint paint2; |
| + // CreateBitmapShader is too smart for us; an empty (or 1x1) bitmap shader |
| + // gets optimized into a non-bitmap form, so we create a 2x2 bitmap here. |
| + SkBitmap bitmap2; |
| + bitmap2.allocPixels(SkImageInfo::MakeN32Premul(2, 2)); |
| + bitmap2.eraseColor(SK_ColorBLUE); |
| + *(bitmap2.getAddr32(0, 0)) = SK_ColorGREEN; |
| + SkShader* shader = SkShader::CreateBitmapShader(bitmap2, SkShader::kClamp_TileMode, |
| + SkShader::kClamp_TileMode); |
| + paint2.setShader(shader); |
| + REPORTER_ASSERT(r, shader->asABitmap(NULL, NULL, NULL) == SkShader::kDefault_BitmapType); |
| + SkNEW_PLACEMENT_ARGS(record.append<SkRecords::DrawRect>(), |
| + SkRecords::DrawRect, (paint2, rect)); |
| + REPORTER_ASSERT(r, SkRecordWillPlaybackBitmaps(record)); |
| +} |
| + |