diff options
author | Andreas Stöckel <astoecke@techfak.uni-bielefeld.de> | 2014-12-20 15:49:22 +0100 |
---|---|---|
committer | Andreas Stöckel <andreas@somweyr.de> | 2014-12-20 15:49:22 +0100 |
commit | 87233da76c01ebead18a26f01ffb4e20dffe3214 (patch) | |
tree | f7fd66178555b794e3c27071c845a239fc46d4cb /test | |
parent | 55b860964cb752b920d415c4332da85a97abd087 (diff) |
implemented reading escaped unicode characters as in javascript
Diffstat (limited to 'test')
-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) |