Lex Strings
This commit is contained in:
@@ -276,4 +276,43 @@ TEST_CASE( "Lex End Position", "[lexer]" ) {
|
||||
CHECK(((IdentifierToken*)tokens[3]) -> GetEndPosition() == 11);
|
||||
CHECK(((IdentifierToken*)tokens[4]) -> GetEndPosition() == 12);
|
||||
}
|
||||
|
||||
TEST_CASE("Lex Double Quote String", "[lexer]") {
|
||||
Lexer lexer = Lexer("\"foo bar\"", nullptr);
|
||||
auto tokens = lexer.Lex();
|
||||
REQUIRE(tokens.size() == 2);
|
||||
IToken* firstToken = tokens[0];
|
||||
REQUIRE(firstToken -> GetKind() == TokenKind::String);
|
||||
REQUIRE(((StringToken*)firstToken) -> Value == "foo bar");
|
||||
}
|
||||
|
||||
TEST_CASE("Lex Single Quote String", "[lexer]") {
|
||||
Lexer lexer = Lexer("'foo bar'", nullptr);
|
||||
auto tokens = lexer.Lex();
|
||||
REQUIRE(tokens.size() == 2);
|
||||
IToken* firstToken = tokens[0];
|
||||
REQUIRE(firstToken -> GetKind() == TokenKind::String);
|
||||
REQUIRE(((StringToken*)firstToken) -> Value == "foo bar");
|
||||
}
|
||||
|
||||
TEST_CASE("Lex Double Quote String, Escape Quote", "[lexer]") {
|
||||
Lexer lexer = Lexer("'foo\\\"bar'", nullptr);
|
||||
auto tokens = lexer.Lex();
|
||||
REQUIRE(tokens.size() == 2);
|
||||
IToken* firstToken = tokens[0];
|
||||
REQUIRE(firstToken -> GetKind() == TokenKind::String);
|
||||
REQUIRE(((StringToken*)firstToken) -> Value == "foo\"bar");
|
||||
}
|
||||
|
||||
TEST_CASE("Lex String with newline", "[lexer]") {
|
||||
Lexer lexer = Lexer("'foo\\nbar'", nullptr);
|
||||
auto tokens = lexer.Lex();
|
||||
REQUIRE(tokens.size() == 2);
|
||||
IToken* firstToken = tokens[0];
|
||||
REQUIRE(firstToken -> GetKind() == TokenKind::String);
|
||||
REQUIRE(((StringToken*)firstToken) -> Value == "foo\nbar");
|
||||
}
|
||||
|
||||
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user