diff --git a/autotest/CParserSurrogatePairs/CParserSurrogatePairs.cpp b/autotest/CParserSurrogatePairs/CParserSurrogatePairs.cpp index cb3e333ef..03ec09517 100644 --- a/autotest/CParserSurrogatePairs/CParserSurrogatePairs.cpp +++ b/autotest/CParserSurrogatePairs/CParserSurrogatePairs.cpp @@ -2,6 +2,21 @@ using namespace Upp; +void CheckError(const char *err) +{ + try { + CParser p(err); + p.ReadString(); + } + catch(CParser::Error error) { + DUMP(error); + return; + } + + DUMP(err); + ASSERT(0); +} + CONSOLE_APP_MAIN { String utf8 = "\xF0\x9F\x91\x8D"; @@ -9,12 +24,18 @@ CONSOLE_APP_MAIN DUMPHEX(ToUtf8(0x1F44D)); ASSERT(ToUtf8(0x1F44D) == utf8); - CParser p("\"\\ud83d\\udc4d\""); - p.UnicodeEscape(); + CParser p("\"\\ud83d\\udc4d\\U0001F44D\""); String h = p.ReadString(); DUMPHEX(h); - ASSERT(h == utf8); + ASSERT(h == utf8 + utf8); + + CheckError("\"\\ud83d1\\udc4d\\U0001F44D\""); + CheckError("\"\\ud83d\\u0000\\U0001F44D\""); + CheckError("\"\\ud83d\\U0001F44D\""); + CheckError("\"\\ud83d\\udc4d\\U000F44D\""); + CheckError("\"\\u83d"); + CheckError("\"\\U83d"); }