From 2427d67269761f2b5c4a78f80ad55db686b684d3 Mon Sep 17 00:00:00 2001 From: Pasha Bibko <156938226+PashaBibko@users.noreply.github.com> Date: Sun, 24 Aug 2025 20:56:19 +0100 Subject: [PATCH] Improved ParserContext tests --- tests/src/ParserTests.cpp | 75 ++++++++++++++------------------------- 1 file changed, 26 insertions(+), 49 deletions(-) diff --git a/tests/src/ParserTests.cpp b/tests/src/ParserTests.cpp index d19c51a..bd4a90a 100644 --- a/tests/src/ParserTests.cpp +++ b/tests/src/ParserTests.cpp @@ -59,57 +59,27 @@ namespace PashaBibko::LXC::Parser ParserContext ctx(tokens.Result()); - for (size_t idx = 0; idx < 10; idx++) + static const Lexer::Token::TokenType results[] = + { + Lexer::Token::OpenCrocodile, + Lexer::Token::Identifier, + Lexer::Token::CloseCrocodile, + Lexer::Token::Identifier, + Lexer::Token::OpenParen, + Lexer::Token::CloseParen, + Lexer::Token::OpenBrace, + Lexer::Token::Return, + Lexer::Token::NumLiteral, + Lexer::Token::CloseBrace + }; + + std::size_t resultLength = tokens.Result().size(); + EXPECT_TRUE(resultLength == 11); + + for (std::size_t index = 0; index < resultLength - 1; index++) { const Lexer::Token* current = ctx.Advance(); - ASSERT_FALSE(current == nullptr); - const Lexer::Token::TokenType cType = current->type; - - switch (idx) - { - case 0: - EXPECT_TRUE(cType == Lexer::Token::OpenCrocodile); - break; - - case 1: - EXPECT_TRUE(cType == Lexer::Token::Identifier); - break; - - case 2: - EXPECT_TRUE(cType == Lexer::Token::CloseCrocodile); - break; - - case 3: - EXPECT_TRUE(cType == Lexer::Token::Identifier); - break; - - case 4: - EXPECT_TRUE(cType == Lexer::Token::OpenParen); - break; - - case 5: - EXPECT_TRUE(cType == Lexer::Token::CloseParen); - break; - - case 6: - EXPECT_TRUE(cType == Lexer::Token::OpenBrace); - break; - - case 7: - EXPECT_TRUE(cType == Lexer::Token::Return); - break; - - case 8: - EXPECT_TRUE(cType == Lexer::Token::NumLiteral); - break; - - case 9: - EXPECT_TRUE(cType == Lexer::Token::CloseBrace); - break; - - default: - ASSERT_FALSE(false); // There were two many tokens generated by the lexer - } + EXPECT_TRUE(current->type == results[index]); } } @@ -134,5 +104,12 @@ namespace PashaBibko::LXC::Parser Lexer::Token::NumLiteral, Lexer::Token::CloseBrace })); + + ASSERT_FALSE(ctx.Expect(std::array + { + Lexer::Token::FunctionDef, + Lexer::Token::OpenCrocodile, + Lexer::Token::NumLiteral + })); } }