From 8ef7989c1793cc25fa5d88692910ebb45be7e70d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Del=20Pino?= <stephane.delpino44@gmail.com> Date: Wed, 9 Feb 2022 16:42:19 +0100 Subject: [PATCH] Add missing test for SubItemArrayPerItem --- src/mesh/SubItemArrayPerItem.hpp | 2 +- tests/test_SubItemArrayPerItem.cpp | 111 +++++++++++++++++++++++++++++ 2 files changed, 112 insertions(+), 1 deletion(-) diff --git a/src/mesh/SubItemArrayPerItem.hpp b/src/mesh/SubItemArrayPerItem.hpp index 9fd488bc5..8c8b1724c 100644 --- a/src/mesh/SubItemArrayPerItem.hpp +++ b/src/mesh/SubItemArrayPerItem.hpp @@ -142,7 +142,7 @@ class SubItemArrayPerItem void fill(const DataType& data) const noexcept { - static_assert(not std::is_const_v<DataType>, "Cannot modify ItemValue of const"); + static_assert(not std::is_const_v<DataType>, "Cannot modify SubItemArrayPerItem of const"); m_values.fill(data); } diff --git a/tests/test_SubItemArrayPerItem.cpp b/tests/test_SubItemArrayPerItem.cpp index c72f98b76..23be4a345 100644 --- a/tests/test_SubItemArrayPerItem.cpp +++ b/tests/test_SubItemArrayPerItem.cpp @@ -874,6 +874,117 @@ TEST_CASE("SubItemArrayPerItem", "[mesh]") } } + SECTION("fill") + { + std::array mesh_list = MeshDataBaseForTests::get().all3DMeshes(); + + for (auto named_mesh : mesh_list) { + SECTION(named_mesh.name()) + { + auto mesh_3d = named_mesh.mesh(); + + const Connectivity<3>& connectivity = mesh_3d->connectivity(); + + SECTION("classic") + { + NodeArrayPerCell<size_t> node_array_per_cell{connectivity, 3}; + { + size_t k = 0; + for (size_t i = 0; i < node_array_per_cell.numberOfArrays(); ++i) { + for (size_t j = 0; j < node_array_per_cell.sizeOfArrays(); ++j, ++k) { + node_array_per_cell[i][j] = k; + } + } + } + NodeArrayPerCell<size_t> copy_node_array_per_cell = copy(node_array_per_cell); + { + bool is_same = true; + for (size_t i = 0; i < copy_node_array_per_cell.numberOfArrays(); ++i) { + for (size_t j = 0; j < node_array_per_cell.sizeOfArrays(); ++j) { + is_same &= (copy_node_array_per_cell[i][j] == node_array_per_cell[i][j]); + } + } + + REQUIRE(is_same); + } + + node_array_per_cell.fill(11); + + { + bool is_same = true; + for (size_t i = 0; i < copy_node_array_per_cell.numberOfArrays(); ++i) { + for (size_t j = 0; j < copy_node_array_per_cell.sizeOfArrays(); ++j) { + is_same &= (copy_node_array_per_cell[i][j] == node_array_per_cell[i][j]); + } + } + + REQUIRE(not is_same); + } + + { + bool is_filled_with_11 = true; + for (size_t i = 0; i < copy_node_array_per_cell.numberOfArrays(); ++i) { + for (size_t j = 0; j < copy_node_array_per_cell.sizeOfArrays(); ++j) { + is_filled_with_11 &= (node_array_per_cell[i][j] == 11); + } + } + + REQUIRE(is_filled_with_11); + } + } + + SECTION("from weak") + { + WeakNodeArrayPerCell<size_t> node_array_per_cell{connectivity, 3}; + { + size_t k = 0; + for (size_t i = 0; i < node_array_per_cell.numberOfArrays(); ++i) { + for (size_t j = 0; j < node_array_per_cell.sizeOfArrays(); ++j, ++k) { + node_array_per_cell[i][j] = k; + } + } + } + + NodeArrayPerCell<size_t> copy_node_array_per_cell = copy(node_array_per_cell); + { + bool is_same = true; + for (size_t i = 0; i < copy_node_array_per_cell.numberOfArrays(); ++i) { + for (size_t j = 0; j < node_array_per_cell.sizeOfArrays(); ++j) { + is_same &= (copy_node_array_per_cell[i][j] == node_array_per_cell[i][j]); + } + } + + REQUIRE(is_same); + } + + node_array_per_cell.fill(13); + + { + bool is_same = true; + for (size_t i = 0; i < copy_node_array_per_cell.numberOfArrays(); ++i) { + for (size_t j = 0; j < node_array_per_cell.sizeOfArrays(); ++j) { + is_same &= (copy_node_array_per_cell[i][j] == node_array_per_cell[i][j]); + } + } + + REQUIRE(not is_same); + } + + { + bool is_filled_with_13 = true; + for (size_t i = 0; i < copy_node_array_per_cell.numberOfArrays(); ++i) { + for (size_t j = 0; j < copy_node_array_per_cell.sizeOfArrays(); ++j) { + is_filled_with_13 &= (node_array_per_cell[i][j] == 13); + } + } + + REQUIRE(is_filled_with_13); + } + } + } + } + } + SECTION("WeakSubItemArrayPerItem") { std::array mesh_list = MeshDataBaseForTests::get().all2DMeshes(); -- GitLab