From 4146b9c5446a7f97a15b4a66a733819261f542b4 Mon Sep 17 00:00:00 2001
From: Stephane Del Pino <stephane.delpino44@gmail.com>
Date: Thu, 25 Jul 2019 12:41:01 +0200
Subject: [PATCH] Add node type tests for boolean statements and unary
 operators

---
 tests/test_ASTNodeDataTypeBuilder.cpp | 210 ++++++++++++++++++++++++++
 1 file changed, 210 insertions(+)

diff --git a/tests/test_ASTNodeDataTypeBuilder.cpp b/tests/test_ASTNodeDataTypeBuilder.cpp
index db5584779..5d557d21a 100644
--- a/tests/test_ASTNodeDataTypeBuilder.cpp
+++ b/tests/test_ASTNodeDataTypeBuilder.cpp
@@ -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);
+    }
+  }
 }
-- 
GitLab