Skip to content
Snippets Groups Projects
Commit 218f0905 authored by Stéphane Del Pino's avatar Stéphane Del Pino
Browse files

Add missing R^d test for ASTNodeDataTypeFlattener

Also removed useless ASTPrinter calls
parent 01e1d381
No related branches found
No related tags found
1 merge request!37Feature/language
...@@ -10,8 +10,6 @@ ...@@ -10,8 +10,6 @@
#include <ASTNodeTypeCleaner.hpp> #include <ASTNodeTypeCleaner.hpp>
#include <ASTPrinter.hpp>
#include <PEGGrammar.hpp> #include <PEGGrammar.hpp>
TEST_CASE("ASTNodeDataTypeFlattener", "[language]") TEST_CASE("ASTNodeDataTypeFlattener", "[language]")
...@@ -31,9 +29,6 @@ b; ...@@ -31,9 +29,6 @@ b;
ASTSymbolTableBuilder{*root_node}; ASTSymbolTableBuilder{*root_node};
ASTNodeDataTypeBuilder{*root_node}; ASTNodeDataTypeBuilder{*root_node};
std::stringstream ast_output;
ast_output << '\n' << ASTPrinter{*root_node, ASTPrinter::Format::raw, {ASTPrinter::Info::none}};
REQUIRE(root_node->children[1]->is_type<language::name>()); REQUIRE(root_node->children[1]->is_type<language::name>());
ASTNodeDataTypeFlattener::FlattenedDataTypeList flattened_datatype_list; ASTNodeDataTypeFlattener::FlattenedDataTypeList flattened_datatype_list;
...@@ -57,9 +52,6 @@ n; ...@@ -57,9 +52,6 @@ n;
ASTSymbolTableBuilder{*root_node}; ASTSymbolTableBuilder{*root_node};
ASTNodeDataTypeBuilder{*root_node}; ASTNodeDataTypeBuilder{*root_node};
std::stringstream ast_output;
ast_output << '\n' << ASTPrinter{*root_node, ASTPrinter::Format::raw, {ASTPrinter::Info::none}};
REQUIRE(root_node->children[1]->is_type<language::name>()); REQUIRE(root_node->children[1]->is_type<language::name>());
ASTNodeDataTypeFlattener::FlattenedDataTypeList flattened_datatype_list; ASTNodeDataTypeFlattener::FlattenedDataTypeList flattened_datatype_list;
...@@ -92,9 +84,6 @@ f(2); ...@@ -92,9 +84,6 @@ f(2);
ASTNodeTypeCleaner<language::declaration>{*root_node}; ASTNodeTypeCleaner<language::declaration>{*root_node};
ASTNodeTypeCleaner<language::let_declaration>{*root_node}; ASTNodeTypeCleaner<language::let_declaration>{*root_node};
std::stringstream ast_output;
ast_output << '\n' << ASTPrinter{*root_node, ASTPrinter::Format::raw, {ASTPrinter::Info::none}};
REQUIRE(root_node->children[0]->is_type<language::function_evaluation>()); REQUIRE(root_node->children[0]->is_type<language::function_evaluation>());
ASTNodeDataTypeFlattener::FlattenedDataTypeList flattened_datatype_list; ASTNodeDataTypeFlattener::FlattenedDataTypeList flattened_datatype_list;
...@@ -124,9 +113,6 @@ f(2); ...@@ -124,9 +113,6 @@ f(2);
ASTNodeTypeCleaner<language::declaration>{*root_node}; ASTNodeTypeCleaner<language::declaration>{*root_node};
ASTNodeTypeCleaner<language::let_declaration>{*root_node}; ASTNodeTypeCleaner<language::let_declaration>{*root_node};
std::stringstream ast_output;
ast_output << '\n' << ASTPrinter{*root_node, ASTPrinter::Format::raw, {ASTPrinter::Info::none}};
REQUIRE(root_node->children[0]->is_type<language::function_evaluation>()); REQUIRE(root_node->children[0]->is_type<language::function_evaluation>());
ASTNodeDataTypeFlattener::FlattenedDataTypeList flattened_datatype_list; ASTNodeDataTypeFlattener::FlattenedDataTypeList flattened_datatype_list;
...@@ -138,8 +124,36 @@ f(2); ...@@ -138,8 +124,36 @@ f(2);
REQUIRE(flattened_datatype_list[2].m_data_type == ASTNodeDataType::bool_t); REQUIRE(flattened_datatype_list[2].m_data_type == ASTNodeDataType::bool_t);
REQUIRE(flattened_datatype_list[3].m_data_type == ASTNodeDataType::string_t); REQUIRE(flattened_datatype_list[3].m_data_type == ASTNodeDataType::string_t);
REQUIRE(flattened_datatype_list[4].m_data_type == ASTNodeDataType::int_t); REQUIRE(flattened_datatype_list[4].m_data_type == ASTNodeDataType::int_t);
}
SECTION("function evaluation -> R*R^3")
{
std::string_view data = R"(
let f: R -> R*R^3, x -> (0.5*x, (x, x+1, x-1));
f(2);
)";
string_input input{data, "test.pgs"};
auto root_node = ASTBuilder::build(input);
ASTSymbolTableBuilder{*root_node};
ASTNodeDataTypeBuilder{*root_node};
// optimizations
ASTNodeDeclarationToAffectationConverter{*root_node};
ASTNodeTypeCleaner<language::declaration>{*root_node};
ASTNodeTypeCleaner<language::let_declaration>{*root_node};
REQUIRE(root_node->children[0]->is_type<language::function_evaluation>());
ASTNodeDataTypeFlattener::FlattenedDataTypeList flattened_datatype_list;
ASTNodeDataTypeFlattener{*root_node->children[0], flattened_datatype_list};
// REQUIRE(&flattened_datatype_list[0].m_parent_node == root_node->children[0].get()); REQUIRE(flattened_datatype_list.size() == 2);
REQUIRE(flattened_datatype_list[0].m_data_type == ASTNodeDataType::double_t);
REQUIRE(flattened_datatype_list[1].m_data_type == ASTNodeDataType::vector_t);
REQUIRE(flattened_datatype_list[1].m_data_type.dimension() == 3);
} }
} }
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment