aboutsummaryrefslogtreecommitdiffhomepage
path: root/tests/PictureTest.cpp
diff options
context:
space:
mode:
authorGravatar reed <reed@google.com>2016-07-06 09:29:16 -0700
committerGravatar Commit bot <commit-bot@chromium.org>2016-07-06 09:29:17 -0700
commit41c27e15ec2740850700f1b82038ce0f7a632481 (patch)
tree5830ed6b2047502cb68cf0e0a805a4d670f74c64 /tests/PictureTest.cpp
parent7ec92413307c9da43c013d1e4e15716a44059810 (diff)
Experiment: add flag for finish-recording to return null
Diffstat (limited to 'tests/PictureTest.cpp')
-rw-r--r--tests/PictureTest.cpp60
1 files changed, 60 insertions, 0 deletions
diff --git a/tests/PictureTest.cpp b/tests/PictureTest.cpp
index f109482311..eb0c6a8f0e 100644
--- a/tests/PictureTest.cpp
+++ b/tests/PictureTest.cpp
@@ -1447,3 +1447,63 @@ DEF_TEST(PictureGpuAnalyzer, r) {
}
#endif // SK_SUPPORT_GPU
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+static void empty_ops(SkCanvas* canvas) {
+}
+static void clip_ops(SkCanvas* canvas) {
+ canvas->save();
+ canvas->clipRect(SkRect::MakeWH(20, 20));
+ canvas->restore();
+}
+static void matrix_ops(SkCanvas* canvas) {
+ canvas->save();
+ canvas->scale(2, 3);
+ canvas->restore();
+}
+static void matrixclip_ops(SkCanvas* canvas) {
+ canvas->save();
+ canvas->scale(2, 3);
+ canvas->clipRect(SkRect::MakeWH(20, 20));
+ canvas->restore();
+}
+typedef void (*CanvasProc)(SkCanvas*);
+
+// Test the kReturnNullForEmpty_FinishFlag option when recording
+//
+DEF_TEST(Picture_RecordEmpty, r) {
+ const SkRect cull = SkRect::MakeWH(100, 100);
+
+ CanvasProc procs[] { empty_ops, clip_ops, matrix_ops, matrixclip_ops };
+
+ for (auto proc : procs) {
+ {
+ SkPictureRecorder rec;
+ proc(rec.beginRecording(cull));
+ sk_sp<SkPicture> pic = rec.finishRecordingAsPicture(0);
+ REPORTER_ASSERT(r, pic.get());
+ REPORTER_ASSERT(r, pic->approximateOpCount() == 0);
+ }
+ {
+ SkPictureRecorder rec;
+ proc(rec.beginRecording(cull));
+ sk_sp<SkPicture> pic = rec.finishRecordingAsPicture(
+ SkPictureRecorder::kReturnNullForEmpty_FinishFlag);
+ REPORTER_ASSERT(r, !pic.get());
+ }
+ {
+ SkPictureRecorder rec;
+ proc(rec.beginRecording(cull));
+ sk_sp<SkDrawable> dr = rec.finishRecordingAsDrawable(0);
+ REPORTER_ASSERT(r, dr.get());
+ }
+ {
+ SkPictureRecorder rec;
+ proc(rec.beginRecording(cull));
+ sk_sp<SkDrawable> dr = rec.finishRecordingAsDrawable(
+ SkPictureRecorder::kReturnNullForEmpty_FinishFlag);
+ REPORTER_ASSERT(r, !dr.get());
+ }
+ }
+}