Add SIMD ScanCopyUnescapedString test
diff --git a/test/unittest/simdtest.cpp b/test/unittest/simdtest.cpp
index 4407c25..00f5200 100644
--- a/test/unittest/simdtest.cpp
+++ b/test/unittest/simdtest.cpp
@@ -66,3 +66,39 @@
     TestSkipWhitespace<StringStream>();
     TestSkipWhitespace<InsituStringStream>();
 }
+
+struct ScanCopyUnescapedStringHandler : BaseReaderHandler<UTF8<>, ScanCopyUnescapedStringHandler> {
+    bool String(const char* str, size_t length, bool copy) {
+        memcpy(buffer, str, length + 1);
+        return true;
+    }
+    char buffer[1024 + 5];
+};
+
+template <typename StreamType>
+void TestScanCopyUnescapedString() {
+    for (size_t step = 0; step < 1024; step++) {
+        char json[1024 + 5];
+        char *p = json;
+        *p ++= '\"';
+        for (size_t i = 0; i < step; i++)
+            *p++= "ABCD"[i % 4];
+        *p++ = '\\';
+        *p++ = '\\';
+        *p++ = '\"';
+        *p++ = '\0';
+
+        StreamType s(json);
+        Reader reader;
+        ScanCopyUnescapedStringHandler h;
+        reader.Parse(s, h);
+        EXPECT_TRUE(memcmp(h.buffer, json + 1, step) == 0);
+        EXPECT_EQ('\\', h.buffer[step]);    // escaped
+        EXPECT_EQ('\0', h.buffer[step + 1]);
+    }
+}
+
+TEST(SIMD, SIMD_SUFFIX(ScanCopyUnescapedString)) {
+    TestScanCopyUnescapedString<StringStream>();
+    TestScanCopyUnescapedString<InsituStringStream>();
+}