| Index: tests/Writer32Test.cpp | 
| diff --git a/tests/Writer32Test.cpp b/tests/Writer32Test.cpp | 
| index 39ae79cff624f3370ff2ecf9ec7081be383828b4..e03a9163aa446050fabb979a456f54a56a89c78f 100644 | 
| --- a/tests/Writer32Test.cpp | 
| +++ b/tests/Writer32Test.cpp | 
| @@ -278,3 +278,44 @@ DEF_TEST(Writer32_misc, reporter) { | 
| test_rewind(reporter); | 
| } | 
|  | 
| +DEF_TEST(Writer32_data, reporter) { | 
| +    const char* str = "0123456789"; | 
| +    SkAutoTUnref<SkData> data0(SkData::NewWithCString(str)); | 
| +    SkAutoTUnref<SkData> data1(SkData::NewEmpty()); | 
| + | 
| +    const size_t sizes[] = { | 
| +        SkWriter32::WriteDataSize(nullptr), | 
| +        SkWriter32::WriteDataSize(data0), | 
| +        SkWriter32::WriteDataSize(data1), | 
| +    }; | 
| + | 
| +    SkSWriter32<1000> writer; | 
| +    size_t sizeWritten = 0; | 
| + | 
| +    writer.writeData(nullptr); | 
| +    sizeWritten += sizes[0]; | 
| +    REPORTER_ASSERT(reporter, sizeWritten == writer.bytesWritten()); | 
| + | 
| +    writer.writeData(data0); | 
| +    sizeWritten += sizes[1]; | 
| +    REPORTER_ASSERT(reporter, sizeWritten == writer.bytesWritten()); | 
| + | 
| +    writer.writeData(data1); | 
| +    sizeWritten += sizes[2]; | 
| +    REPORTER_ASSERT(reporter, sizeWritten == writer.bytesWritten()); | 
| + | 
| +    SkAutoTUnref<SkData> result(writer.snapshotAsData()); | 
| + | 
| +    SkReader32 reader(result->data(), result->size()); | 
| +    SkAutoTUnref<SkData> d0(reader.readData()), | 
| +                         d1(reader.readData()), | 
| +                         d2(reader.readData()); | 
| + | 
| +    REPORTER_ASSERT(reporter, 0 == d0->size()); | 
| +    REPORTER_ASSERT(reporter, strlen(str)+1 == d1->size()); | 
| +    REPORTER_ASSERT(reporter, !memcmp(str, d1->data(), strlen(str)+1)); | 
| +    REPORTER_ASSERT(reporter, 0 == d2->size()); | 
| + | 
| +    REPORTER_ASSERT(reporter, reader.offset() == sizeWritten); | 
| +    REPORTER_ASSERT(reporter, reader.eof()); | 
| +} | 
|  |