From c1d8d089334439fe4ae8a3da228c3d8798b0cac0 Mon Sep 17 00:00:00 2001 From: Stephane Del Pino <stephane.delpino44@gmail.com> Date: Mon, 8 Jul 2019 13:00:10 +0200 Subject: [PATCH] Add ASTSymbolTableBuilder tests --- tests/CMakeLists.txt | 1 + tests/test_ASTSymbolTableBuilder.cpp | 48 ++++++++++++++++++++++++++++ 2 files changed, 49 insertions(+) create mode 100644 tests/test_ASTSymbolTableBuilder.cpp diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index bd30945f2..fda652d92 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -3,6 +3,7 @@ set(EXECUTABLE_OUTPUT_PATH ${PUGS_BINARY_DIR}) add_executable (unit_tests test_main.cpp + test_ASTSymbolTableBuilder.cpp test_ASTBuilder.cpp test_Array.cpp test_ArrayUtils.cpp diff --git a/tests/test_ASTSymbolTableBuilder.cpp b/tests/test_ASTSymbolTableBuilder.cpp new file mode 100644 index 000000000..1f3d98f21 --- /dev/null +++ b/tests/test_ASTSymbolTableBuilder.cpp @@ -0,0 +1,48 @@ +#include <catch2/catch.hpp> + +#include <ASTBuilder.hpp> +#include <ASTSymbolTableBuilder.hpp> + +TEST_CASE("ASTSymbolTableBuilder", "[language]") +{ + SECTION("Build symbols") + { + std::string_view data = R"( +N n = 2; +{ + N m = n; + R n = m/3.; +} +)"; + + string_input input{data, "test.pgs"}; + auto ast = ASTBuilder::build(input); + + ASTSymbolTableBuilder{*ast}; + } + + SECTION("Undeclared symbol") + { + std::string_view data = R"( +N n = a; +)"; + + string_input input{data, "test.pgs"}; + auto ast = ASTBuilder::build(input); + + REQUIRE_THROWS_AS(ASTSymbolTableBuilder{*ast}, parse_error); + } + + SECTION("Re-declared symbol") + { + std::string_view data = R"( +N n = 0; +N n = 1; +)"; + + string_input input{data, "test.pgs"}; + auto ast = ASTBuilder::build(input); + + REQUIRE_THROWS_AS(ASTSymbolTableBuilder{*ast}, parse_error); + } +} -- GitLab