From 5b330b41e505327a852b5c7276cfe8534f19e54a Mon Sep 17 00:00:00 2001
From: Stephane Del Pino <stephane.delpino44@gmail.com>
Date: Fri, 18 Oct 2019 19:40:05 +0200
Subject: [PATCH] Add tests for module import and `let` declaration

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

diff --git a/tests/test_ASTNodeDataTypeBuilder.cpp b/tests/test_ASTNodeDataTypeBuilder.cpp
index a39f3f834..5faacdbf3 100644
--- a/tests/test_ASTNodeDataTypeBuilder.cpp
+++ b/tests/test_ASTNodeDataTypeBuilder.cpp
@@ -25,6 +25,21 @@
 
 TEST_CASE("ASTNodeDataTypeBuilder", "[language]")
 {
+  SECTION("module")
+  {
+    std::string_view data = R"(
+import a_module_name;
+)";
+
+    std::string_view result = R"(
+(root:void)
+ `-(language::import_instruction:void)
+     `-(language::module_name:string)
+)";
+
+    CHECK_AST(data, result);
+  }
+
   SECTION("integer")
   {
     std::string_view data = R"(
@@ -100,6 +115,42 @@ false;
     CHECK_AST(data, result);
   }
 
+  SECTION("let declaration")
+  {
+    SECTION("scalar functions")
+    {
+      std::string_view data = R"(
+let f : R -> R, x -> x;
+let g : R*R -> R, (x,y) -> x+y;
+)";
+
+      std::string_view result = R"(
+(root:void)
+ +-(language::let_declaration:void)
+ |   `-(language::name:f:function)
+ `-(language::let_declaration:void)
+     `-(language::name:g:function)
+)";
+
+      CHECK_AST(data, result);
+    }
+
+    SECTION("scalar functions")
+    {
+      std::string_view data = R"(
+let f : R -> R, (x) -> x;
+)";
+
+      std::string_view result = R"(
+(root:void)
+ `-(language::let_declaration:void)
+     `-(language::name:f:function)
+)";
+#warning finish this test
+      //      CHECK_AST(data, result);
+    }
+  }
+
   SECTION("ostream")
   {
     std::string_view data = R"(
-- 
GitLab