From 980637a1f20ff164d2d2a12ed0e2aff319ebf114 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?St=C3=A9phane=20Del=20Pino?= <stephane.delpino44@gmail.com>
Date: Tue, 10 Nov 2020 23:58:49 +0100
Subject: [PATCH] Add very simple tests for ASTExecutionInfo

---
 src/language/utils/ASTExecutionInfo.hpp |  2 ++
 tests/test_ASTModulesImporter.cpp       | 16 +++++++++++++++-
 2 files changed, 17 insertions(+), 1 deletion(-)

diff --git a/src/language/utils/ASTExecutionInfo.hpp b/src/language/utils/ASTExecutionInfo.hpp
index 96fc874ce..da4b81742 100644
--- a/src/language/utils/ASTExecutionInfo.hpp
+++ b/src/language/utils/ASTExecutionInfo.hpp
@@ -16,6 +16,8 @@ class ASTExecutionInfo
 
   // The only place where the ASTExecutionInfo can be built
   friend void parser(const std::string& filename);
+  // also allowed for testing
+  friend void test_ASTExecutionInfo(const ASTNode&, const ModuleRepository&);
 
   ASTExecutionInfo(const ASTNode& root_node, const ModuleRepository& module_repository);
 
diff --git a/tests/test_ASTModulesImporter.cpp b/tests/test_ASTModulesImporter.cpp
index 42638d918..a3a4e3d7a 100644
--- a/tests/test_ASTModulesImporter.cpp
+++ b/tests/test_ASTModulesImporter.cpp
@@ -4,11 +4,22 @@
 #include <language/ast/ASTModulesImporter.hpp>
 #include <language/ast/ASTNodeExpressionBuilder.hpp>
 #include <language/ast/ASTNodeTypeCleaner.hpp>
+#include <language/utils/ASTExecutionInfo.hpp>
 #include <language/utils/ASTPrinter.hpp>
 #include <language/utils/SymbolTable.hpp>
 
 #include <pegtl/string_input.hpp>
 
+inline void
+test_ASTExecutionInfo(const ASTNode& root_node, const ModuleRepository& module_repository)
+{
+  ASTExecutionInfo execution_info{root_node, module_repository};
+  REQUIRE(&root_node == &execution_info.rootNode());
+  REQUIRE(&module_repository == &execution_info.moduleRepository());
+
+  REQUIRE(&ASTExecutionInfo::current() == &execution_info);
+}
+
 #define CHECK_AST(data, expected_output)                                                            \
   {                                                                                                 \
     static_assert(std::is_same_v<std::decay_t<decltype(data)>, std::string_view>);                  \
@@ -17,10 +28,13 @@
     string_input input{data, "test.pgs"};                                                           \
     auto ast = ASTBuilder::build(input);                                                            \
                                                                                                     \
-    ASTModulesImporter{*ast};                                                                       \
+    ASTModulesImporter importer{*ast};                                                              \
     ASTNodeTypeCleaner<language::import_instruction>{*ast};                                         \
                                                                                                     \
     ASTNodeExpressionBuilder{*ast};                                                                 \
+    const auto& module_repository = importer.moduleRepository();                                    \
+    test_ASTExecutionInfo(*ast, module_repository);                                                 \
+                                                                                                    \
     ExecutionPolicy exec_policy;                                                                    \
     ast->execute(exec_policy);                                                                      \
                                                                                                     \
-- 
GitLab