Add gtest

Signed-off-by: CHatingPython <chatingpython@gmail.com>
This commit is contained in:
CHatingPython
2026-05-25 08:16:44 +02:00
committed by CHatingPython
parent 7df35fc075
commit 438288f8f1
8 changed files with 81 additions and 41 deletions
+29
View File
@@ -0,0 +1,29 @@
#include "furc/front/lexer.hpp"
#include "gtest/gtest.h"
namespace {
using namespace furc::front;
using namespace std::string_view_literals;
#define EXPECT_TOKEN(lexer, t) EXPECT_EQ((lexer).next_token(), (t));
TEST(Lexer, Tokens) {
lexer lexer("<TEMP>", "()\n\t\t{\n}[]; :,.main return func");
EXPECT_TOKEN(lexer, (token{ token_t::Lparen, "("sv }));
EXPECT_TOKEN(lexer, (token{ token_t::Rparen, ")"sv }));
EXPECT_TOKEN(lexer, (token{ token_t::Lbrace, "{"sv }));
EXPECT_TOKEN(lexer, (token{ token_t::Rbrace, "}"sv }));
EXPECT_TOKEN(lexer, (token{ token_t::Lbracket, "["sv }));
EXPECT_TOKEN(lexer, (token{ token_t::Rbracket, "]"sv }));
EXPECT_TOKEN(lexer, (token{ token_t::Semicolon, ";"sv }));
EXPECT_TOKEN(lexer, (token{ token_t::Colon, ":"sv }));
EXPECT_TOKEN(lexer, (token{ token_t::Comma, ","sv }));
EXPECT_TOKEN(lexer, (token{ token_t::Dot, "."sv }));
EXPECT_TOKEN(lexer, (token{ token_t::Identifier, "main"sv }));
EXPECT_TOKEN(lexer, (token{ keyword_token::Return }));
EXPECT_TOKEN(lexer, (token{ keyword_token::Func }));
}
} // namespace