diff --git a/tests/Writer32Test.cpp b/tests/Writer32Test.cpp
index 6ecfcf3..194164d 100644
--- a/tests/Writer32Test.cpp
+++ b/tests/Writer32Test.cpp
@@ -24,29 +24,11 @@
 static void test_string_null(skiatest::Reporter* reporter) {
     uint8_t storage[8];
     SkWriter32 writer(0, storage, sizeof(storage));
-    SkReader32 reader(storage, sizeof(storage));
-
-    const char* str;
-    size_t len;
 
     // Can we write NULL?
     writer.writeString(NULL);
-    const int32_t null[] = { 0xFFFF };
-    check_contents(reporter, writer, null, sizeof(null));
-    str = reader.readString(&len);
-    REPORTER_ASSERT(reporter, NULL == str);
-    REPORTER_ASSERT(reporter, 0 == len);
-
-    writer.reset(storage, sizeof(storage));
-    reader.rewind();
-
-    // Is NULL distinct from ""?
-    writer.writeString("");
-    const int32_t empty[] = { 0x0, 0x0 };
-    check_contents(reporter, writer, empty, sizeof(empty));
-    str = reader.readString(&len);
-    REPORTER_ASSERT(reporter, 0 == strcmp("", str));
-    REPORTER_ASSERT(reporter, 0 == len);
+    const int32_t expected[] = { 0x0, 0x0 };
+    check_contents(reporter, writer, expected, sizeof(expected));
 }
 
 static void test_rewind(skiatest::Reporter* reporter) {
