From da5e6ba18ffbc48f7b990b664661c1a8488a44d6 Mon Sep 17 00:00:00 2001 From: Stephane Del Pino <stephane.delpino44@gmail.com> Date: Thu, 25 Jul 2019 14:30:37 +0200 Subject: [PATCH] Add tests for binary operator node types --- tests/test_ASTNodeDataTypeBuilder.cpp | 79 +++++++++++++++++++++++++++ 1 file changed, 79 insertions(+) diff --git a/tests/test_ASTNodeDataTypeBuilder.cpp b/tests/test_ASTNodeDataTypeBuilder.cpp index 0b3c290ff..11cfd4819 100644 --- a/tests/test_ASTNodeDataTypeBuilder.cpp +++ b/tests/test_ASTNodeDataTypeBuilder.cpp @@ -940,4 +940,83 @@ not 1; CHECK_AST(data, result); } } + + SECTION("binary operators") + { + SECTION("plus") + { + std::string_view data = R"( +1+2; +)"; + + std::string_view result = R"( +(root:void) + `-(language::plus_op:Z) + +-(language::integer:1:Z) + `-(language::integer:2:Z) +)"; + + CHECK_AST(data, result); + } + + SECTION("minus") + { + std::string_view data = R"( +1-2; +)"; + + std::string_view result = R"( +(root:void) + `-(language::minus_op:Z) + +-(language::integer:1:Z) + `-(language::integer:2:Z) +)"; + + CHECK_AST(data, result); + } + + SECTION("multiply") + { + std::string_view data = R"( +1*2; +)"; + + std::string_view result = R"( +(root:void) + `-(language::multiply_op:Z) + +-(language::integer:1:Z) + `-(language::integer:2:Z) +)"; + + CHECK_AST(data, result); + } + + SECTION("divide") + { + std::string_view data = R"( +1/2; +)"; + + std::string_view result = R"( +(root:void) + `-(language::divide_op:Z) + +-(language::integer:1:Z) + `-(language::integer:2:Z) +)"; + + CHECK_AST(data, result); + } + + SECTION("invalid operands") + { + std::string_view data = R"( +1+"string"; +)"; + + string_input input{data, "test.pgs"}; + auto ast = ASTBuilder::build(input); + ASTSymbolTableBuilder{*ast}; + REQUIRE_THROWS_AS(ASTNodeDataTypeBuilder{*ast}, parse_error); + } + } } -- GitLab