written the test in a different way, since we

can't use for loops around subcases
This commit is contained in:
Karma Riuk
2025-07-11 09:07:12 +02:00
parent ed3cf748e2
commit f038d30d77

View File

@@ -49,32 +49,25 @@ TEST_SUITE("Parser: expression") {
ParserFixture,
"Simple expression statement with prefix before integer"
) {
SUBCASE("Prefix: '!'") {
setup("!5;");
#define CASE(name, input, _op, _right) \
SUBCASE(name) { \
setup(input); \
\
REQUIRE(program->statements.size() == 1); \
ast::expression_stmt* expression_stmt = \
cast<ast::expression_stmt>(program->statements[0]); \
\
ast::prefix_expr* prefix_expr = \
cast<ast::prefix_expr>(expression_stmt->expression); \
\
REQUIRE(prefix_expr->op == _op); \
test_integer_literal(prefix_expr->right, _right); \
}
REQUIRE(program->statements.size() == 1);
ast::expression_stmt* expression_stmt =
cast<ast::expression_stmt>(program->statements[0]);
CASE("Prefix: '!'", "!5;", "!", 5);
CASE("Prefix: '-'", "-15;", "-", 15);
#undef CASE
}
ast::prefix_expr* prefix_expr =
cast<ast::prefix_expr>(expression_stmt->expression);
REQUIRE(prefix_expr->op == "!");
test_integer_literal(prefix_expr->right, 5);
}
SUBCASE("Prefix: '-'") {
setup("-15;");
REQUIRE(program->statements.size() == 1);
ast::expression_stmt* expression_stmt =
cast<ast::expression_stmt>(program->statements[0]);
ast::prefix_expr* prefix_expr =
cast<ast::prefix_expr>(expression_stmt->expression);
REQUIRE(prefix_expr->op == "-");
test_integer_literal(prefix_expr->right, 15);
}
}
}