Chromium Code Reviews| Index: tests/RecordDrawTest.cpp |
| diff --git a/tests/RecordDrawTest.cpp b/tests/RecordDrawTest.cpp |
| index 1108af6e36503c9471ad2c10b3364a7e1f85e865..a9b151b446069eff97129e97d54ed0081f9066be 100644 |
| --- a/tests/RecordDrawTest.cpp |
| +++ b/tests/RecordDrawTest.cpp |
| @@ -11,11 +11,13 @@ |
| #include "SkDebugCanvas.h" |
| #include "SkDrawPictureCallback.h" |
| #include "SkDropShadowImageFilter.h" |
| +#include "SkImagePriv.h" |
| #include "SkRecord.h" |
| #include "SkRecordDraw.h" |
| #include "SkRecordOpts.h" |
| #include "SkRecorder.h" |
| #include "SkRecords.h" |
| +#include "SkSurface.h" |
| static const int W = 1920, H = 1080; |
| @@ -251,3 +253,76 @@ DEF_TEST(RecordDraw_SaveLayerAffectsClipBounds, r) { |
| REPORTER_ASSERT(r, sloppy_rect_eq(bbh.entries[2].bounds, SkRect::MakeLTRB(0, 0, 40, 40))); |
| REPORTER_ASSERT(r, sloppy_rect_eq(bbh.entries[3].bounds, SkRect::MakeLTRB(0, 0, 70, 50))); |
| } |
| + |
| +DEF_TEST(RecordDraw_drawImage, r){ |
|
mtklein
2014/09/27 15:41:22
I feel like this test may be taking on a bit too m
Rémi Piotaix
2014/09/29 17:57:55
Yes, already done in RecorderTest.cpp, but this is
|
| + class SkCanvasMock : public SkCanvas { |
| + public: |
| + SkCanvasMock(int width, int height) : INHERITED(width, height) { |
|
robertphillips
2014/09/29 17:07:56
this->
Rémi Piotaix
2014/09/29 17:57:55
Done.
|
| + resetTestValues(); |
| + } |
| + virtual ~SkCanvasMock() {} |
| + virtual void drawImage(const SkImage* image, SkScalar left, SkScalar top, |
| + const SkPaint* paint = NULL) SK_OVERRIDE { |
| + |
|
robertphillips
2014/09/29 17:07:56
fDrawImageCalled
Rémi Piotaix
2014/09/29 17:57:55
Done.
|
| + fDrawImage_called = true; |
| + fDrawingImage = image; |
| + INHERITED::drawImage(image, left, top, paint); |
| + } |
| + |
| + virtual void drawImageRect(const SkImage* image, const SkRect* src, |
| + const SkRect& dst, |
| + const SkPaint* paint = NULL) SK_OVERRIDE { |
| + fDrawImageRect_called = true; |
| + fDrawingImage = image; |
| + INHERITED::drawImageRect(image, src, dst, paint); |
| + } |
| + |
| + virtual void drawBitmap(const SkBitmap& bitmap, SkScalar left, SkScalar top, |
| + const SkPaint* paint = NULL) SK_OVERRIDE { |
| + fDrawBitmap_valid = bitmap.pixelRef() == SkBitmapImageGetPixelRef(fDrawingImage); |
| + } |
| + |
| + virtual void drawBitmapRectToRect(const SkBitmap& bitmap, const SkRect* src, |
| + const SkRect& dst, |
| + const SkPaint* paint = NULL, |
| + DrawBitmapRectFlags flags = kNone_DrawBitmapRectFlag) |
| + SK_OVERRIDE { |
| + fDrawBitmap_valid = bitmap.pixelRef() == SkBitmapImageGetPixelRef(fDrawingImage); |
| + } |
| + |
| + void resetTestValues() { |
| + fDrawImage_called = fDrawBitmap_valid = fDrawImageRect_called = false; |
| + } |
| + |
| + const SkImage* fDrawingImage; |
|
robertphillips
2014/09/29 17:07:56
No '_'s in the names.
Rémi Piotaix
2014/09/29 17:57:55
Done.
|
| + bool fDrawImage_called; |
| + bool fDrawImageRect_called; |
| + bool fDrawBitmap_valid; |
| + private: |
| + typedef SkCanvas INHERITED; |
| + }; |
| + |
| + SkAutoTUnref<SkSurface> surface(SkSurface::NewRasterPMColor(10, 10)); |
|
reed1
2014/09/29 18:08:26
1. Can we using an outer-loop or something to vary
Rémi Piotaix
2014/09/29 18:40:21
Yeah, sure.
|
| + surface->getCanvas()->clear(SK_ColorGREEN); |
| + SkAutoTUnref<SkImage> image(surface->newImageSnapshot()); |
| + |
| + SkCanvasMock canvas(10, 10); |
| + |
| + { |
| + SkRecord record; |
| + SkRecorder recorder(&record, 10, 10); |
| + recorder.drawImage(image, 0, 0); |
| + SkRecordDraw(record, &canvas, 0, 0); |
| + } |
| + REPORTER_ASSERT(r, canvas.fDrawImage_called && canvas.fDrawBitmap_valid); |
| + canvas.resetTestValues(); |
| + |
| + { |
| + SkRecord record; |
| + SkRecorder recorder(&record, 10, 10); |
| + recorder.drawImageRect(image, 0, SkRect::MakeWH(10, 10)); |
| + SkRecordDraw(record, &canvas, 0, 0); |
| + } |
| + REPORTER_ASSERT(r, canvas.fDrawImageRect_called && canvas.fDrawBitmap_valid); |
| + |
| +} |