diff --git a/tests/test_Array.cpp b/tests/test_Array.cpp
index 23d63a4a2dd769c679811ddc00265ba4aa615dac..dd6f57ea61bd52632477cb16fc7f6556757036f5 100644
--- a/tests/test_Array.cpp
+++ b/tests/test_Array.cpp
@@ -243,5 +243,23 @@ TEST_CASE("Array", "[utils]")
     Array<int> b{2 * a.size()};
     REQUIRE_THROWS_AS(copy_to(a, b), AssertError);
   }
+
+  SECTION("checking for nan initialization")
+  {
+    Array<double> array(10);
+
+    for (size_t i = 0; i < array.size(); ++i) {
+      REQUIRE(std::isnan(array[i]));
+    }
+  }
+
+  SECTION("checking for bad initialization")
+  {
+    Array<int> array(10);
+
+    for (size_t i = 0; i < array.size(); ++i) {
+      REQUIRE(array[i] == std::numeric_limits<int>::max() / 2);
+    }
+  }
 #endif   // NDEBUG
 }
diff --git a/tests/test_CRSMatrixDescriptor.cpp b/tests/test_CRSMatrixDescriptor.cpp
index 2b311d84b06dff839b3376d8c72c4439bc6855e0..28276aaadb747f01933fda8ce302cb853af5cf6d 100644
--- a/tests/test_CRSMatrixDescriptor.cpp
+++ b/tests/test_CRSMatrixDescriptor.cpp
@@ -145,12 +145,14 @@ TEST_CASE("CRSMatrixDescriptor", "[algebra]")
   SECTION("incompatible non zero vector size and number of columns")
   {
     Array<int> non_zeros(3);
+    non_zeros.fill(1);
     REQUIRE_THROWS_AS((CRSMatrixDescriptor<int>{2, 4, non_zeros}), AssertError);
   }
 
   SECTION("bad row number")
   {
     Array<int> non_zeros(2);
+    non_zeros.fill(1);
     CRSMatrixDescriptor<int> S{2, 4, non_zeros};
     REQUIRE_THROWS_AS(S(2, 3) = 1, AssertError);
   }
@@ -158,6 +160,7 @@ TEST_CASE("CRSMatrixDescriptor", "[algebra]")
   SECTION("bad column number")
   {
     Array<int> non_zeros(2);
+    non_zeros.fill(2);
     CRSMatrixDescriptor<int> S{2, 4, non_zeros};
     REQUIRE_THROWS_AS(S(0, 5) = 1, AssertError);
   }
diff --git a/tests/test_Table.cpp b/tests/test_Table.cpp
index 5e738867a592c3f06a9fe8ac7bd958dbcf390e4e..5372c697dc8d8bde1e2039141a8d8e226e7a68d3 100644
--- a/tests/test_Table.cpp
+++ b/tests/test_Table.cpp
@@ -199,5 +199,27 @@ TEST_CASE("Table", "[utils]")
       REQUIRE_THROWS_AS(copy_to(a, c), AssertError);
     }
   }
+
+  SECTION("checking for nan initialization")
+  {
+    Table<double> B(3, 4);
+
+    for (size_t i = 0; i < B.numberOfRows(); ++i) {
+      for (size_t j = 0; j < B.numberOfColumns(); ++j) {
+        REQUIRE(std::isnan(B(i, j)));
+      }
+    }
+  }
+
+  SECTION("checking for bad initialization")
+  {
+    Table<int> B(4, 2);
+
+    for (size_t i = 0; i < B.numberOfRows(); ++i) {
+      for (size_t j = 0; j < B.numberOfColumns(); ++j) {
+        REQUIRE(B(i, j) == std::numeric_limits<int>::max() / 2);
+      }
+    }
+  }
 #endif   // NDEBUG
 }
diff --git a/tests/test_TinyMatrix.cpp b/tests/test_TinyMatrix.cpp
index 464e78448192f3dacc248d6c7fde8c63338449bb..3a03b47f71e9e5491485053870f93ab45349d942 100644
--- a/tests/test_TinyMatrix.cpp
+++ b/tests/test_TinyMatrix.cpp
@@ -238,5 +238,27 @@ TEST_CASE("TinyMatrix", "[algebra]")
     REQUIRE_THROWS_AS(constA(3, 0), AssertError);
     REQUIRE_THROWS_AS(constA(0, 3), AssertError);
   }
+
+  SECTION("checking for nan initialization")
+  {
+    TinyMatrix<3, double> B;
+
+    for (size_t i = 0; i < B.numberOfRows(); ++i) {
+      for (size_t j = 0; j < B.numberOfColumns(); ++j) {
+        REQUIRE(std::isnan(B(i, j)));
+      }
+    }
+  }
+
+  SECTION("checking for bad initialization")
+  {
+    TinyMatrix<3, int> B;
+
+    for (size_t i = 0; i < B.numberOfRows(); ++i) {
+      for (size_t j = 0; j < B.numberOfColumns(); ++j) {
+        REQUIRE(B(i, j) == std::numeric_limits<int>::max() / 2);
+      }
+    }
+  }
 #endif   // NDEBUG
 }
diff --git a/tests/test_TinyVector.cpp b/tests/test_TinyVector.cpp
index 499536f9c702d5c3a1f2fcf8c4da7b1ecb461038..c4fb06998505d0eb5e5697835958d9a970d5e01a 100644
--- a/tests/test_TinyVector.cpp
+++ b/tests/test_TinyVector.cpp
@@ -87,5 +87,24 @@ TEST_CASE("TinyVector", "[algebra]")
     const TinyVector<3, int>& const_x = x;
     REQUIRE_THROWS_AS(const_x[-1], AssertError);
   }
+
+  SECTION("checking for nan initialization")
+  {
+    TinyVector<3, double> y;
+
+    for (size_t i = 0; i < y.dimension(); ++i) {
+      REQUIRE(std::isnan(y[i]));
+    }
+  }
+
+  SECTION("checking for bad initialization")
+  {
+    TinyVector<3, int> y;
+
+    for (size_t i = 0; i < y.dimension(); ++i) {
+      REQUIRE(y[i] == std::numeric_limits<int>::max() / 2);
+    }
+  }
+
 #endif   // NDEBUG
 }