aboutsummaryrefslogtreecommitdiffhomepage
path: root/tests/PipeTest.cpp
diff options
context:
space:
mode:
authorGravatar reed <reed@google.com>2016-09-13 17:25:19 -0700
committerGravatar Commit bot <commit-bot@chromium.org>2016-09-13 17:25:19 -0700
commit7e3ba9f88d64d901243799b61f497319e5970693 (patch)
treeda3ffd0aa8b6c67bd46c0cc16c881bf1e503143c /tests/PipeTest.cpp
parent21cc9950c4b4eb183c315c7d417e36342a9f1cf9 (diff)
change write-image to use pipeverbs like everyone else, and add test
Diffstat (limited to 'tests/PipeTest.cpp')
-rw-r--r--tests/PipeTest.cpp29
1 files changed, 28 insertions, 1 deletions
diff --git a/tests/PipeTest.cpp b/tests/PipeTest.cpp
index f345debb8c..7f42071a75 100644
--- a/tests/PipeTest.cpp
+++ b/tests/PipeTest.cpp
@@ -49,7 +49,7 @@ static bool deep_equal(SkImage* a, SkImage* b) {
return true;
}
-DEF_TEST(Pipe_image, reporter) {
+DEF_TEST(Pipe_image_draw_first, reporter) {
sk_sp<SkImage> img = GetResourceAsImage("mandrill_128.png");
SkASSERT(img.get());
@@ -86,3 +86,30 @@ DEF_TEST(Pipe_image, reporter) {
auto img2 = drain_as_image(&deserializer, &stream);
REPORTER_ASSERT(reporter, img1.get() == img2.get());
}
+
+DEF_TEST(Pipe_image_draw_second, reporter) {
+ sk_sp<SkImage> img = GetResourceAsImage("mandrill_128.png");
+ SkASSERT(img.get());
+
+ SkPipeSerializer serializer;
+ SkPipeDeserializer deserializer;
+ SkDynamicMemoryWStream stream;
+
+ serializer.write(img.get(), &stream);
+ size_t offset0 = stream.bytesWritten();
+ REPORTER_ASSERT(reporter, offset0 > 100); // the raw image must be sorta big
+ drain_as_image(&deserializer, &stream);
+
+ // The 2nd image should be nice and small
+ serializer.write(img.get(), &stream);
+ size_t offset1 = stream.bytesWritten();
+ REPORTER_ASSERT(reporter, offset1 <= 32);
+ drain_as_image(&deserializer, &stream);
+
+ // Now try drawing the image, it should also be small
+ SkCanvas* wc = serializer.beginWrite(SkRect::MakeWH(100, 100), &stream);
+ wc->drawImage(img, 0, 0, nullptr);
+ serializer.endWrite();
+ size_t offset2 = stream.bytesWritten();
+ REPORTER_ASSERT(reporter, offset2 <= 32);
+}