mirror of
https://github.com/jbeder/yaml-cpp.git
synced 2025-09-08 12:21:17 +00:00
Add support for JSON-compatible string escapes (#485)
For completeness I've implemented escaping for characters outside the basic multilingual plane, but it doesn't get used (as there's no EscapeAsAsciiJson emitter option implemented).
This commit is contained in:
@@ -813,7 +813,43 @@ TEST_F(EmitterTest, Unicode) {
|
||||
|
||||
TEST_F(EmitterTest, DoubleQuotedUnicode) {
|
||||
out << DoubleQuoted << "\x24 \xC2\xA2 \xE2\x82\xAC \xF0\xA4\xAD\xA2";
|
||||
ExpectEmit("\"\x24 \xC2\xA2 \xE2\x82\xAC \xF0\xA4\xAD\xA2\"");
|
||||
ExpectEmit("\"\x24 \xC2\xA2 \xE2\x82\xAC \xF0\xA4\xAD\xA2\"");
|
||||
}
|
||||
|
||||
TEST_F(EmitterTest, EscapedJsonString) {
|
||||
out.SetStringFormat(DoubleQuoted);
|
||||
out.SetOutputCharset(EscapeAsJson);
|
||||
out << "\" \\ "
|
||||
"\x01 \x02 \x03 \x04 \x05 \x06 \x07 \x08 \x09 \x0A \x0B \x0C \x0D \x0E \x0F "
|
||||
"\x10 \x11 \x12 \x13 \x14 \x15 \x16 \x17 \x18 \x19 \x1A \x1B \x1C \x1D \x1E \x1F "
|
||||
"\x24 \xC2\xA2 \xE2\x82\xAC \xF0\xA4\xAD\xA2";
|
||||
|
||||
ExpectEmit(R"("\" \\ \u0001 \u0002 \u0003 \u0004 \u0005 \u0006 \u0007 \b \t )"
|
||||
R"(\n \u000b \f \r \u000e \u000f \u0010 \u0011 \u0012 \u0013 )"
|
||||
R"(\u0014 \u0015 \u0016 \u0017 \u0018 \u0019 \u001a \u001b )"
|
||||
R"(\u001c \u001d \u001e \u001f )"
|
||||
"$ \xC2\xA2 \xE2\x82\xAC \xF0\xA4\xAD\xA2\"");
|
||||
}
|
||||
|
||||
TEST_F(EmitterTest, EscapedCharacters) {
|
||||
out << BeginSeq
|
||||
<< '\x00'
|
||||
<< '\x0C'
|
||||
<< '\x0D'
|
||||
<< EndSeq;
|
||||
|
||||
ExpectEmit("- \"\\x00\"\n- \"\\f\"\n- \"\\r\"");
|
||||
}
|
||||
|
||||
TEST_F(EmitterTest, CharactersEscapedAsJson) {
|
||||
out.SetOutputCharset(EscapeAsJson);
|
||||
out << BeginSeq
|
||||
<< '\x00'
|
||||
<< '\x0C'
|
||||
<< '\x0D'
|
||||
<< EndSeq;
|
||||
|
||||
ExpectEmit("- \"\\u0000\"\n- \"\\f\"\n- \"\\r\"");
|
||||
}
|
||||
|
||||
TEST_F(EmitterTest, DoubleQuotedString) {
|
||||
|
Reference in New Issue
Block a user