diff --git a/tests/test_ASTNodeArraySubscriptExpressionBuilder.cpp b/tests/test_ASTNodeArraySubscriptExpressionBuilder.cpp
index 45b1303c3db5c69457921d98f76f43403274d7ed..7eadd2067e54e670021aa2bee03e92fe0abedccd 100644
--- a/tests/test_ASTNodeArraySubscriptExpressionBuilder.cpp
+++ b/tests/test_ASTNodeArraySubscriptExpressionBuilder.cpp
@@ -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")