Improved ParserContext tests

This commit is contained in:
Pasha Bibko
2025-08-24 20:56:19 +01:00
parent dc1cca1843
commit 2427d67269

View File

@@ -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
}));
}
}