Skip to content
Snippets Groups Projects
Commit 4146b9c5 authored by Stéphane Del Pino's avatar Stéphane Del Pino
Browse files

Add node type tests for boolean statements and unary operators

parent 22602bbe
Branches
Tags
1 merge request!37Feature/language
......@@ -700,4 +700,214 @@ do 1; while ("string");
REQUIRE_THROWS_AS(ASTNodeDataTypeBuilder{*ast}, parse_error);
}
}
SECTION("boolean statements")
{
SECTION("unary not")
{
std::string_view data = R"(
not 1;
)";
std::string_view result = R"(
(root:void)
`-(language::unary_not:B)
`-(language::integer:1:Z)
)";
CHECK_AST(data, result);
}
SECTION("lesser op")
{
std::string_view data = R"(
1<2;
)";
std::string_view result = R"(
(root:void)
`-(language::lesser_op:B)
+-(language::integer:1:Z)
`-(language::integer:2:Z)
)";
CHECK_AST(data, result);
}
SECTION("lesser_or_eq op")
{
std::string_view data = R"(
1<=2;
)";
std::string_view result = R"(
(root:void)
`-(language::lesser_or_eq_op:B)
+-(language::integer:1:Z)
`-(language::integer:2:Z)
)";
CHECK_AST(data, result);
}
SECTION("greater op")
{
std::string_view data = R"(
1>2;
)";
std::string_view result = R"(
(root:void)
`-(language::greater_op:B)
+-(language::integer:1:Z)
`-(language::integer:2:Z)
)";
CHECK_AST(data, result);
}
SECTION("greater_or_eq op")
{
std::string_view data = R"(
1>=2;
)";
std::string_view result = R"(
(root:void)
`-(language::greater_or_eq_op:B)
+-(language::integer:1:Z)
`-(language::integer:2:Z)
)";
CHECK_AST(data, result);
}
SECTION("eqeq op")
{
std::string_view data = R"(
1==2;
)";
std::string_view result = R"(
(root:void)
`-(language::eqeq_op:B)
+-(language::integer:1:Z)
`-(language::integer:2:Z)
)";
CHECK_AST(data, result);
}
SECTION("not_eq op")
{
std::string_view data = R"(
1!=2;
)";
std::string_view result = R"(
(root:void)
`-(language::not_eq_op:B)
+-(language::integer:1:Z)
`-(language::integer:2:Z)
)";
CHECK_AST(data, result);
}
SECTION("and op")
{
std::string_view data = R"(
1 and 2;
)";
std::string_view result = R"(
(root:void)
`-(language::and_op:B)
+-(language::integer:1:Z)
`-(language::integer:2:Z)
)";
CHECK_AST(data, result);
}
SECTION("or op")
{
std::string_view data = R"(
1 or 2;
)";
std::string_view result = R"(
(root:void)
`-(language::or_op:B)
+-(language::integer:1:Z)
`-(language::integer:2:Z)
)";
CHECK_AST(data, result);
}
SECTION("xor op")
{
std::string_view data = R"(
1 xor 2;
)";
std::string_view result = R"(
(root:void)
`-(language::xor_op:B)
+-(language::integer:1:Z)
`-(language::integer:2:Z)
)";
CHECK_AST(data, result);
}
}
SECTION("unary operators")
{
SECTION("unary minus")
{
std::string_view data = R"(
- 1;
)";
std::string_view result = R"(
(root:void)
`-(language::unary_minus:Z)
`-(language::integer:1:Z)
)";
CHECK_AST(data, result);
}
SECTION("unary plusplus")
{
std::string_view data = R"(
++1;
)";
std::string_view result = R"(
(root:void)
`-(language::unary_plusplus:Z)
`-(language::integer:1:Z)
)";
CHECK_AST(data, result);
}
SECTION("unary minusminus")
{
std::string_view data = R"(
--1;
)";
std::string_view result = R"(
(root:void)
`-(language::unary_minusminus:Z)
`-(language::integer:1:Z)
)";
CHECK_AST(data, result);
}
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment