Skip to content
Snippets Groups Projects

Feature/language tiny matrices

Merged Stéphane Del Pino requested to merge feature/language-tiny-matrices into develop
1 file
+ 60
0
Compare changes
  • Side-by-side
  • Inline
@@ -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")
Loading