summaryrefslogtreecommitdiff
path: root/test/gtest/wat-lexer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'test/gtest/wat-lexer.cpp')
-rw-r--r--test/gtest/wat-lexer.cpp27
1 files changed, 27 insertions, 0 deletions
diff --git a/test/gtest/wat-lexer.cpp b/test/gtest/wat-lexer.cpp
index b46f9927f..b62644682 100644
--- a/test/gtest/wat-lexer.cpp
+++ b/test/gtest/wat-lexer.cpp
@@ -1377,6 +1377,33 @@ TEST(LexerTest, LexIdent) {
Lexer lexer("$"sv);
EXPECT_TRUE(lexer.empty());
}
+
+ // String IDs
+ {
+ Lexer lexer("$\"\"");
+ ASSERT_FALSE(lexer.empty());
+ Token expected{"$\"\""sv, IdTok{true, std::nullopt}};
+ EXPECT_EQ(*lexer, expected);
+ EXPECT_TRUE(lexer->getID());
+ EXPECT_EQ(*lexer->getID(), ""sv);
+ }
+ {
+ Lexer lexer("$\"hello\"");
+ ASSERT_FALSE(lexer.empty());
+ Token expected{"$\"hello\""sv, IdTok{true, std::nullopt}};
+ EXPECT_EQ(*lexer, expected);
+ EXPECT_TRUE(lexer->getID());
+ EXPECT_EQ(*lexer->getID(), "hello"sv);
+ }
+ {
+ // _$_£_€_𐍈_
+ auto unicode = "$\"_\\u{24}_\\u{00a3}_\\u{20AC}_\\u{10348}_\""sv;
+ Lexer lexer(unicode);
+ ASSERT_FALSE(lexer.empty());
+ std::string escaped{"_$_\xC2\xA3_\xE2\x82\xAC_\xF0\x90\x8D\x88_"};
+ Token expected{unicode, IdTok{true, {escaped}}};
+ EXPECT_EQ(*lexer, expected);
+ }
}
TEST(LexerTest, LexString) {