written the test in a different way, since we
can't use for loops around subcases
This commit is contained in:
@@ -49,32 +49,25 @@ TEST_SUITE("Parser: expression") {
|
|||||||
ParserFixture,
|
ParserFixture,
|
||||||
"Simple expression statement with prefix before integer"
|
"Simple expression statement with prefix before integer"
|
||||||
) {
|
) {
|
||||||
SUBCASE("Prefix: '!'") {
|
#define CASE(name, input, _op, _right) \
|
||||||
setup("!5;");
|
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);
|
CASE("Prefix: '!'", "!5;", "!", 5);
|
||||||
ast::expression_stmt* expression_stmt =
|
CASE("Prefix: '-'", "-15;", "-", 15);
|
||||||
cast<ast::expression_stmt>(program->statements[0]);
|
#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);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user