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