From fba39f1d3d5acc83ea1bb6d2f9527c503a48a94e Mon Sep 17 00:00:00 2001 From: Stephane Del Pino <stephane.delpino44@gmail.com> Date: Tue, 9 Jul 2019 18:52:00 +0200 Subject: [PATCH] Begin test for ASTNodeDataTypeBuilder --- tests/CMakeLists.txt | 1 + tests/test_ASTNodeDataTypeBuilder.cpp | 83 +++++++++++++++++++++++++++ 2 files changed, 84 insertions(+) create mode 100644 tests/test_ASTNodeDataTypeBuilder.cpp diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index de029d999..4f6c06b02 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -8,6 +8,7 @@ add_executable (unit_tests test_ASTDotPrinter.cpp test_ASTBuilder.cpp test_ASTNodeDataType.cpp + test_ASTNodeDataTypeBuilder.cpp test_ASTSymbolTableBuilder.cpp test_ASTSymbolInitializationChecker.cpp test_ItemType.cpp diff --git a/tests/test_ASTNodeDataTypeBuilder.cpp b/tests/test_ASTNodeDataTypeBuilder.cpp new file mode 100644 index 000000000..a4bcd80b2 --- /dev/null +++ b/tests/test_ASTNodeDataTypeBuilder.cpp @@ -0,0 +1,83 @@ +#include <catch2/catch.hpp> + +#include <ASTBuilder.hpp> +#include <ASTNodeDataTypeBuilder.hpp> +#include <ASTSymbolTableBuilder.hpp> + +#include <ASTPrinter.hpp> + +#define CHECK_AST(data, expected_output) \ + { \ + static_assert(std::is_same_v<std::decay_t<decltype(data)>, std::string_view>); \ + static_assert(std::is_same_v<std::decay_t<decltype(expected_output)>, std::string_view>); \ + \ + string_input input{data, "test.pgs"}; \ + auto ast = ASTBuilder::build(input); \ + \ + ASTSymbolTableBuilder{*ast}; \ + ASTNodeDataTypeBuilder{*ast}; \ + \ + std::stringstream ast_output; \ + ast_output << '\n' << ASTPrinter{*ast, ASTPrinter::Format::raw, {ASTPrinter::Info::data_type}}; \ + \ + REQUIRE(ast_output.str() == expected_output); \ + } + +TEST_CASE("ASTNodeDataTypeBuilder", "[language]") +{ + SECTION("integer") + { + std::string_view data = R"( +1; +)"; + + std::string_view result = R"( +(root:void) + `-(language::integer:1:Z) +)"; + + CHECK_AST(data, result); + } + + SECTION("real") + { + std::string_view data = R"( +1.3; +)"; + + std::string_view result = R"( +(root:void) + `-(language::real:1.3:R) +)"; + + CHECK_AST(data, result); + } + + SECTION("true") + { + std::string_view data = R"( +true; +)"; + + std::string_view result = R"( +(root:void) + `-(language::true_kw:B) +)"; + + CHECK_AST(data, result); + } + + SECTION("false") + { + std::string_view data = R"( +false; +)"; + + std::string_view result = R"( +(root:void) + `-(language::false_kw:B) +)"; + + CHECK_AST(data, result); + } +} -- GitLab