From 053613f0ebdfcd0d6bde4d84565a152e5485846a Mon Sep 17 00:00:00 2001
From: Stephane Del Pino <stephane.delpino44@gmail.com>
Date: Fri, 12 Jul 2019 19:06:29 +0200
Subject: [PATCH] Continue ASTNodeDataTypeBuilder tests

---
 src/language/ASTNodeDataTypeBuilder.cpp |   2 -
 tests/test_ASTNodeDataTypeBuilder.cpp   | 176 ++++++++++++++++++++++++
 2 files changed, 176 insertions(+), 2 deletions(-)

diff --git a/src/language/ASTNodeDataTypeBuilder.cpp b/src/language/ASTNodeDataTypeBuilder.cpp
index 85e610b0b..b7e22e626 100644
--- a/src/language/ASTNodeDataTypeBuilder.cpp
+++ b/src/language/ASTNodeDataTypeBuilder.cpp
@@ -69,8 +69,6 @@ ASTNodeDataTypeBuilder::_buildNodeDataTypes(ASTNode& n)
                n.is<language::pluseq_op>() or n.is<language::minuseq_op>() or n.is<language::bit_andeq_op>() or
                n.is<language::bit_xoreq_op>() or n.is<language::bit_oreq_op>()) {
       n.m_data_type = n.children[0]->m_data_type;
-    } else if (n.is<language::for_statement>()) {
-      n.m_data_type = ASTNodeDataType::void_t;
     } else if (n.is<language::for_post>() or n.is<language::for_init>() or n.is<language::for_statement_bloc>()) {
       n.m_data_type = ASTNodeDataType::void_t;
     } else if (n.is<language::for_test>()) {
diff --git a/tests/test_ASTNodeDataTypeBuilder.cpp b/tests/test_ASTNodeDataTypeBuilder.cpp
index a4bcd80b2..3b8558c3d 100644
--- a/tests/test_ASTNodeDataTypeBuilder.cpp
+++ b/tests/test_ASTNodeDataTypeBuilder.cpp
@@ -80,4 +80,180 @@ false;
 
     CHECK_AST(data, result);
   }
+
+  SECTION("bloc")
+  {
+    std::string_view data = R"(
+{
+  1;
+  2.3;
+}
+)";
+
+    std::string_view result = R"(
+(root:void)
+ `-(language::bloc:void)
+     +-(language::integer:1:Z)
+     `-(language::real:2.3:R)
+)";
+
+    CHECK_AST(data, result);
+  }
+
+  SECTION("ostream")
+  {
+    std::string_view data = R"(
+cout << "cout\n";
+cerr << "cerr\n";
+clog << "clog\n";
+)";
+
+    std::string_view result = R"(
+(root:void)
+ +-(language::cout_kw:void)
+ |   `-(language::literal:"cout\n":string)
+ +-(language::cerr_kw:void)
+ |   `-(language::literal:"cerr\n":string)
+ `-(language::clog_kw:void)
+     `-(language::literal:"clog\n":string)
+)";
+
+    CHECK_AST(data, result);
+  }
+
+  SECTION("for-statement")
+  {
+    std::string_view data = R"(
+for (N i=0; i<3; ++i){
+  cout << i << "\n";
+}
+)";
+
+    std::string_view result = R"(
+(root:void)
+ `-(language::for_statement:void)
+     +-(language::declaration:N)
+     |   +-(language::N_set:void)
+     |   +-(language::name:i:N)
+     |   `-(language::integer:0:Z)
+     +-(language::lesser_op:B)
+     |   +-(language::name:i:N)
+     |   `-(language::integer:3:Z)
+     +-(language::unary_plusplus:N)
+     |   `-(language::name:i:N)
+     `-(language::cout_kw:void)
+         +-(language::name:i:N)
+         `-(language::literal:"\n":string)
+)";
+
+    CHECK_AST(data, result);
+  }
+
+  SECTION("B set")
+  {
+    std::string_view data = R"(
+B b;
+)";
+
+    std::string_view result = R"(
+(root:void)
+ `-(language::declaration:B)
+     +-(language::B_set:void)
+     `-(language::name:b:B)
+)";
+
+    CHECK_AST(data, result);
+  }
+
+  SECTION("N set")
+  {
+    std::string_view data = R"(
+N n;
+)";
+
+    std::string_view result = R"(
+(root:void)
+ `-(language::declaration:N)
+     +-(language::N_set:void)
+     `-(language::name:n:N)
+)";
+
+    CHECK_AST(data, result);
+  }
+
+  SECTION("Z set")
+  {
+    std::string_view data = R"(
+Z z;
+)";
+
+    std::string_view result = R"(
+(root:void)
+ `-(language::declaration:Z)
+     +-(language::Z_set:void)
+     `-(language::name:z:Z)
+)";
+
+    CHECK_AST(data, result);
+  }
+
+  SECTION("R set")
+  {
+    std::string_view data = R"(
+R r;
+)";
+
+    std::string_view result = R"(
+(root:void)
+ `-(language::declaration:R)
+     +-(language::R_set:void)
+     `-(language::name:r:R)
+)";
+
+    CHECK_AST(data, result);
+  }
+
+  SECTION("string")
+  {
+    std::string_view data = R"(
+string s;
+)";
+
+    std::string_view result = R"(
+(root:void)
+ `-(language::declaration:string)
+     +-(language::string_type:void)
+     `-(language::name:s:string)
+)";
+
+    CHECK_AST(data, result);
+  }
+
+  SECTION("continue")
+  {
+    std::string_view data = R"(
+continue;
+)";
+
+    std::string_view result = R"(
+(root:void)
+ `-(language::continue_kw:void)
+)";
+
+    CHECK_AST(data, result);
+  }
+
+  SECTION("break")
+  {
+    std::string_view data = R"(
+break;
+)";
+
+    std::string_view result = R"(
+(root:void)
+ `-(language::break_kw:void)
+)";
+
+    CHECK_AST(data, result);
+  }
 }
-- 
GitLab