diff options
Diffstat (limited to 'test/core/common/VariantReaderTest.cpp')
-rw-r--r-- | test/core/common/VariantReaderTest.cpp | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/test/core/common/VariantReaderTest.cpp b/test/core/common/VariantReaderTest.cpp index 7972374..3d4e7bd 100644 --- a/test/core/common/VariantReaderTest.cpp +++ b/test/core/common/VariantReaderTest.cpp @@ -60,6 +60,71 @@ TEST(VariantReader, readString) ASSERT_TRUE(res.first); ASSERT_EQ("'\"\b\f\n\r\t\v", res.second); } + + + // Hex Unicode character + { + CharReader reader("'linebreak\\u000A in unicode'"); + auto res = VariantReader::parseString(reader, logger, {';'}); + ASSERT_TRUE(res.first); + ASSERT_EQ("linebreak\n in unicode", res.second); + } +} + +TEST(VariantReader, readStringUnicode) +{ + // Hex Unicode character + { + CharReader reader("'linebreak \\u000A in unicode'"); + auto res = VariantReader::parseString(reader, logger, {';'}); + ASSERT_TRUE(res.first); + ASSERT_EQ("linebreak \n in unicode", res.second); + } + + // Hex Unicode character + { + CharReader reader("'hammer and sickle \\u262D in unicode'"); + auto res = VariantReader::parseString(reader, logger, {';'}); + ASSERT_TRUE(res.first); + ASSERT_EQ("hammer and sickle \342\230\255 in unicode", res.second); + } + + // Octal Latin-1 character + { + CharReader reader("'copyright symbol \\251 in Unicode'"); + auto res = VariantReader::parseString(reader, logger, {';'}); + ASSERT_TRUE(res.first); + ASSERT_EQ("copyright symbol \302\251 in Unicode", res.second); + } + + // Hexadecimal Latin-1 character + { + CharReader reader("'copyright symbol \\xA9 in Unicode'"); + auto res = VariantReader::parseString(reader, logger, {';'}); + ASSERT_TRUE(res.first); + ASSERT_EQ("copyright symbol \302\251 in Unicode", res.second); + } + + // Errornous unicode escape sequence + { + CharReader reader("'\\uBLUB'"); + auto res = VariantReader::parseString(reader, logger, {';'}); + ASSERT_FALSE(res.first); + } + + // Errornous octal escape sequence + { + CharReader reader("'\\400'"); + auto res = VariantReader::parseString(reader, logger, {';'}); + ASSERT_FALSE(res.first); + } + + // Errornous hexadecimal latin1 escape sequence + { + CharReader reader("'\\xa'"); + auto res = VariantReader::parseString(reader, logger, {';'}); + ASSERT_FALSE(res.first); + } } TEST(VariantReader, parseUnescapedString) |