From 253258419b01675a43a80f5f04eb1013d9f2b6d5 Mon Sep 17 00:00:00 2001 From: Mike Reed Date: Wed, 14 Mar 2018 09:52:02 -0400 Subject: add explicit API to know if the writebuffer is using its external storage To help with https://skia-review.googlesource.com/c/skia/+/114262 Bug: skia: Change-Id: I83fcccdec0dbaef28d0e557ea6fb9bd0ed59ed44 Reviewed-on: https://skia-review.googlesource.com/114284 Commit-Queue: Mike Reed Reviewed-by: Mike Reed --- tests/SerializationTest.cpp | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) (limited to 'tests/SerializationTest.cpp') diff --git a/tests/SerializationTest.cpp b/tests/SerializationTest.cpp index 2543870667..da797398c1 100644 --- a/tests/SerializationTest.cpp +++ b/tests/SerializationTest.cpp @@ -637,3 +637,32 @@ DEF_TEST(Annotations, reporter) { TestAnnotationCanvas canvas(reporter, recs, SK_ARRAY_COUNT(recs)); canvas.drawPicture(pict1); } + +DEF_TEST(WriteBuffer_storage, reporter) { + enum { + kSize = 32 + }; + int32_t storage[kSize/4]; + char src[kSize]; + sk_bzero(src, kSize); + + SkBinaryWriteBuffer writer(storage, kSize); + REPORTER_ASSERT(reporter, writer.usingInitialStorage()); + REPORTER_ASSERT(reporter, writer.bytesWritten() == 0); + writer.write(src, kSize - 4); + REPORTER_ASSERT(reporter, writer.usingInitialStorage()); + REPORTER_ASSERT(reporter, writer.bytesWritten() == kSize - 4); + writer.writeInt(0); + REPORTER_ASSERT(reporter, writer.usingInitialStorage()); + REPORTER_ASSERT(reporter, writer.bytesWritten() == kSize); + + writer.reset(storage, kSize-4); + REPORTER_ASSERT(reporter, writer.usingInitialStorage()); + REPORTER_ASSERT(reporter, writer.bytesWritten() == 0); + writer.write(src, kSize - 4); + REPORTER_ASSERT(reporter, writer.usingInitialStorage()); + REPORTER_ASSERT(reporter, writer.bytesWritten() == kSize - 4); + writer.writeInt(0); + REPORTER_ASSERT(reporter, !writer.usingInitialStorage()); // this is the change + REPORTER_ASSERT(reporter, writer.bytesWritten() == kSize); +} -- cgit v1.2.3