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 @@
#include <ASTNodeTypeCleaner.hpp>
#include <ASTPrinter.hpp>
#include <PEGGrammar.hpp>
TEST_CASE("ASTNodeDataTypeFlattener", "[language]")
......@@ -31,9 +29,6 @@ b;
ASTSymbolTableBuilder{*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>());
ASTNodeDataTypeFlattener::FlattenedDataTypeList flattened_datatype_list;
......@@ -57,9 +52,6 @@ n;
ASTSymbolTableBuilder{*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>());
ASTNodeDataTypeFlattener::FlattenedDataTypeList flattened_datatype_list;
......@@ -92,9 +84,6 @@ f(2);
ASTNodeTypeCleaner<language::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>());
ASTNodeDataTypeFlattener::FlattenedDataTypeList flattened_datatype_list;
......@@ -124,9 +113,6 @@ f(2);
ASTNodeTypeCleaner<language::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>());
ASTNodeDataTypeFlattener::FlattenedDataTypeList flattened_datatype_list;
......@@ -138,8 +124,36 @@ f(2);
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[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 to comment