diff --git a/tests/test_ArraySubscriptProcessor.cpp b/tests/test_ArraySubscriptProcessor.cpp
index a48390214ac9cfd38bfa063613c0dc2880fe1f6a..43386ea66a5a207d319c8dd681dad4bb4a779b28 100644
--- a/tests/test_ArraySubscriptProcessor.cpp
+++ b/tests/test_ArraySubscriptProcessor.cpp
@@ -108,6 +108,55 @@ let x2 : R, x2 = x[2];
     CHECK_EVALUATION_RESULT(data, "x2", double{3});
   }
 
+  SECTION("R^1x1 component access")
+  {
+    std::string_view data = R"(
+let x : R^1x1, x = 1;
+let x00: R, x00 = x[0,0];
+)";
+    CHECK_EVALUATION_RESULT(data, "x00", double{1});
+  }
+
+  SECTION("R^2x2 component access")
+  {
+    std::string_view data = R"(
+let x : R^2x2, x = (1,2,3,4);
+let x00: R, x00 = x[0,0];
+let x01: R, x01 = x[0,1];
+let x10: R, x10 = x[1,0];
+let x11: R, x11 = x[1,1];
+)";
+    CHECK_EVALUATION_RESULT(data, "x00", double{1});
+    CHECK_EVALUATION_RESULT(data, "x01", double{2});
+    CHECK_EVALUATION_RESULT(data, "x10", double{3});
+    CHECK_EVALUATION_RESULT(data, "x11", double{4});
+  }
+
+  SECTION("R^3x3 component access")
+  {
+    std::string_view data = R"(
+let x : R^3x3, x = (1,2,3,4,5,6,7,8,9);
+let x00 : R, x00 = x[0,0];
+let x01 : R, x01 = x[0,1];
+let x02 : R, x02 = x[0,2];
+let x10 : R, x10 = x[1,0];
+let x11 : R, x11 = x[1,1];
+let x12 : R, x12 = x[1,2];
+let x20 : R, x20 = x[2,0];
+let x21 : R, x21 = x[2,1];
+let x22 : R, x22 = x[2,2];
+)";
+    CHECK_EVALUATION_RESULT(data, "x00", double{1});
+    CHECK_EVALUATION_RESULT(data, "x01", double{2});
+    CHECK_EVALUATION_RESULT(data, "x02", double{3});
+    CHECK_EVALUATION_RESULT(data, "x10", double{4});
+    CHECK_EVALUATION_RESULT(data, "x11", double{5});
+    CHECK_EVALUATION_RESULT(data, "x12", double{6});
+    CHECK_EVALUATION_RESULT(data, "x20", double{7});
+    CHECK_EVALUATION_RESULT(data, "x21", double{8});
+    CHECK_EVALUATION_RESULT(data, "x22", double{9});
+  }
+
   SECTION("R^d component access from integer expression")
   {
     std::string_view data = R"(
@@ -125,6 +174,23 @@ let z0: R,  z0 = z[(2-2)*1];
     CHECK_EVALUATION_RESULT(data, "z0", double{8});
   }
 
+  SECTION("R^dxd component access from integer expression")
+  {
+    std::string_view data = R"(
+let x : R^3x3, x = (1,2,3,4,5,6,7,8,9);
+let x01: R,  x01 = x[3-2-1,2+3-4];
+
+let y : R^2x2, y = (2,7,6,-2);
+let y11: R,  y11 = y[2/2, 3/1-2];
+
+let z : R^1x1, z = 8;
+let z00: R,  z00 = z[(2-2)*1, (3-1)*2-4];
+)";
+    CHECK_EVALUATION_RESULT(data, "x01", double{2});
+    CHECK_EVALUATION_RESULT(data, "y11", double{-2});
+    CHECK_EVALUATION_RESULT(data, "z00", double{8});
+  }
+
   SECTION("error invalid index type")
   {
     SECTION("R index type")