Przeglądaj źródła

Changed error code for invalid special ascii chars, fixed writer tests

Alejandro Martinez 8 lat temu
rodzic
commit
85500e8c8f
2 zmienionych plików z 4 dodań i 12 usunięć
  1. 1 1
      include/rapidjson/reader.h
  2. 3 11
      test/unittest/writertest.cpp

+ 1 - 1
include/rapidjson/reader.h

@@ -955,7 +955,7 @@ private:
                 if (c == '\0')
                     RAPIDJSON_PARSE_ERROR(kParseErrorStringMissQuotationMark, is.Tell());
                 else
-                    RAPIDJSON_PARSE_ERROR(kParseErrorStringEscapeInvalid, is.Tell());
+                    RAPIDJSON_PARSE_ERROR(kParseErrorStringInvalidEncoding, is.Tell());
             }
             else {
                 size_t offset = is.Tell();

+ 3 - 11
test/unittest/writertest.cpp

@@ -401,16 +401,6 @@ TEST(Writer, InvalidEncoding) {
         static const UTF32<>::Ch s[] = { 0x110000, 0 }; // Out of U+0000 to U+10FFFF
         EXPECT_FALSE(writer.String(s));
     }
-
-    // Fail in decoding invalid ASCII control bytes
-    {
-        GenericStringBuffer<UTF16<> > buffer;
-        Writer<GenericStringBuffer<UTF16<> >, UTF8<>, UTF16<> > writer(buffer);
-        writer.StartArray();
-        EXPECT_FALSE(writer.String("\x01"));
-        EXPECT_FALSE(writer.String("\x1C"));
-        writer.EndArray();
-    }
 }
 
 TEST(Writer, ValidateEncoding) {
@@ -422,8 +412,10 @@ TEST(Writer, ValidateEncoding) {
         EXPECT_TRUE(writer.String("\xC2\xA2"));         // Cents sign U+00A2
         EXPECT_TRUE(writer.String("\xE2\x82\xAC"));     // Euro sign U+20AC
         EXPECT_TRUE(writer.String("\xF0\x9D\x84\x9E")); // G clef sign U+1D11E
+        EXPECT_TRUE(writer.String("\x01"));             // SOH control U+0001
+        EXPECT_TRUE(writer.String("\x1B"));             // Escape control U+001B
         writer.EndArray();
-        EXPECT_STREQ("[\"\x24\",\"\xC2\xA2\",\"\xE2\x82\xAC\",\"\xF0\x9D\x84\x9E\"]", buffer.GetString());
+        EXPECT_STREQ("[\"\x24\",\"\xC2\xA2\",\"\xE2\x82\xAC\",\"\xF0\x9D\x84\x9E\",\"\\u0001\",\"\\u001B\"]", buffer.GetString());
     }
 
     // Fail in decoding invalid UTF-8 sequence http://www.cl.cam.ac.uk/~mgk25/ucs/examples/UTF-8-test.txt