From 5d967304605a53c452af3bf7c1add9865bc08dd5 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?St=C3=A9phane=20Del=20Pino?= <stephane.delpino44@gmail.com>
Date: Wed, 31 Mar 2021 15:58:34 +0200
Subject: [PATCH] Add missing tests for ItemValue

---
 tests/test_ItemValue.cpp | 33 ++++++++++++++++++++++++++++++---
 1 file changed, 30 insertions(+), 3 deletions(-)

diff --git a/tests/test_ItemValue.cpp b/tests/test_ItemValue.cpp
index ef1451264..53201661d 100644
--- a/tests/test_ItemValue.cpp
+++ b/tests/test_ItemValue.cpp
@@ -7,9 +7,6 @@
 #include <mesh/Mesh.hpp>
 #include <utils/Messenger.hpp>
 
-// Instantiate to ensure full coverage is performed
-template class ItemValue<int, ItemType::cell>;
-
 // clazy:excludeall=non-pod-global-static
 
 TEST_CASE("ItemValue", "[mesh]")
@@ -95,6 +92,25 @@ TEST_CASE("ItemValue", "[mesh]")
     REQUIRE(CellValue<int>{connectivity}.isBuilt());
   }
 
+  SECTION("set values from array")
+  {
+    const Mesh<Connectivity<3>>& mesh_3d = MeshDataBaseForTests::get().cartesianMesh<3>();
+    const Connectivity<3>& connectivity  = mesh_3d.connectivity();
+
+    CellValue<size_t> cell_value{connectivity};
+
+    Array<size_t> values{cell_value.size()};
+    for (size_t i = 0; i < values.size(); ++i) {
+      values[i] = i;
+    }
+
+    cell_value = values;
+
+    for (CellId i_cell = 0; i_cell < mesh_3d.numberOfCells(); ++i_cell) {
+      REQUIRE(cell_value[i_cell] == i_cell);
+    }
+  }
+
   SECTION("copy")
   {
     const Mesh<Connectivity<3>>& mesh_3d = MeshDataBaseForTests::get().cartesianMesh<3>();
@@ -170,6 +186,17 @@ TEST_CASE("ItemValue", "[mesh]")
       NodeId invalid_node_id = connectivity.numberOfNodes();
       REQUIRE_THROWS_AS(node_value[invalid_node_id], AssertError);
     }
+
+    SECTION("set values from invalid array size")
+    {
+      const Mesh<Connectivity<3>>& mesh_3d = MeshDataBaseForTests::get().cartesianMesh<3>();
+      const Connectivity<3>& connectivity  = mesh_3d.connectivity();
+
+      CellValue<size_t> cell_value{connectivity};
+
+      Array<size_t> values{3 + cell_value.size()};
+      REQUIRE_THROWS_AS(cell_value = values, AssertError);
+    }
   }
 #endif   // NDEBUG
 }
-- 
GitLab