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

Add missing tests for ASTNodeArraySubscriptExpressionBuilder (R^dxd)

parent 1f9ac713
Branches
Tags
1 merge request!71Feature/language tiny matrices
......@@ -52,6 +52,45 @@ TEST_CASE("ASTNodeArraySubscriptExpressionBuilder", "[language]")
auto& node_processor = *node->m_node_processor;
REQUIRE(typeid(node_processor).name() == typeid(ArraySubscriptProcessor<TinyVector<3>>).name());
}
SECTION("R^1x1")
{
{
std::unique_ptr array_node = std::make_unique<ASTNode>();
array_node->m_data_type = ASTNodeDataType::build<ASTNodeDataType::matrix_t>(1, 1);
node->emplace_back(std::move(array_node));
}
REQUIRE_NOTHROW(ASTNodeArraySubscriptExpressionBuilder{*node});
REQUIRE(bool{node->m_node_processor});
auto& node_processor = *node->m_node_processor;
REQUIRE(typeid(node_processor).name() == typeid(ArraySubscriptProcessor<TinyMatrix<1>>).name());
}
SECTION("R^2x2")
{
{
std::unique_ptr array_node = std::make_unique<ASTNode>();
array_node->m_data_type = ASTNodeDataType::build<ASTNodeDataType::matrix_t>(2, 2);
node->emplace_back(std::move(array_node));
}
REQUIRE_NOTHROW(ASTNodeArraySubscriptExpressionBuilder{*node});
REQUIRE(bool{node->m_node_processor});
auto& node_processor = *node->m_node_processor;
REQUIRE(typeid(node_processor).name() == typeid(ArraySubscriptProcessor<TinyMatrix<2>>).name());
}
SECTION("R^3x3")
{
{
std::unique_ptr array_node = std::make_unique<ASTNode>();
array_node->m_data_type = ASTNodeDataType::build<ASTNodeDataType::matrix_t>(3, 3);
node->emplace_back(std::move(array_node));
}
REQUIRE_NOTHROW(ASTNodeArraySubscriptExpressionBuilder{*node});
REQUIRE(bool{node->m_node_processor});
auto& node_processor = *node->m_node_processor;
REQUIRE(typeid(node_processor).name() == typeid(ArraySubscriptProcessor<TinyMatrix<3>>).name());
}
}
SECTION("R^d component bad access")
......@@ -67,6 +106,7 @@ TEST_CASE("ASTNodeArraySubscriptExpressionBuilder", "[language]")
}
REQUIRE_THROWS_WITH(ASTNodeArraySubscriptExpressionBuilder{*node}, "unexpected error: invalid array dimension");
}
SECTION("R^d (d > 3)")
{
{
......@@ -76,6 +116,26 @@ TEST_CASE("ASTNodeArraySubscriptExpressionBuilder", "[language]")
}
REQUIRE_THROWS_WITH(ASTNodeArraySubscriptExpressionBuilder{*node}, "unexpected error: invalid array dimension");
}
SECTION("R^dxd (d < 1)")
{
{
std::unique_ptr array_node = std::make_unique<ASTNode>();
array_node->m_data_type = ASTNodeDataType::build<ASTNodeDataType::matrix_t>(0, 0);
node->emplace_back(std::move(array_node));
}
REQUIRE_THROWS_WITH(ASTNodeArraySubscriptExpressionBuilder{*node}, "unexpected error: invalid array dimension");
}
SECTION("R^dxd (d > 3)")
{
{
std::unique_ptr array_node = std::make_unique<ASTNode>();
array_node->m_data_type = ASTNodeDataType::build<ASTNodeDataType::matrix_t>(4, 4);
node->emplace_back(std::move(array_node));
}
REQUIRE_THROWS_WITH(ASTNodeArraySubscriptExpressionBuilder{*node}, "unexpected error: invalid array dimension");
}
}
SECTION("invalid array expression")
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment