diff --git a/src/mesh/ItemValue.hpp b/src/mesh/ItemValue.hpp index af45137f55ba9f3d9cefc1391dbe2ba7eb7ec814..496c33242317e49f19842441e9c0fbec0f16ef70 100644 --- a/src/mesh/ItemValue.hpp +++ b/src/mesh/ItemValue.hpp @@ -43,7 +43,7 @@ class ItemValue friend ItemValue<std::remove_const_t<DataType>, item_type, ConnectivityWeakPtr>; public: - friend PUGS_INLINE ItemValue<std::remove_const_t<DataType>, item_type, ConnectivityPtr> + [[nodiscard]] friend PUGS_INLINE ItemValue<std::remove_const_t<DataType>, item_type, ConnectivityPtr> copy(const ItemValue<DataType, item_type, ConnectivityPtr>& source) { ItemValue<std::remove_const_t<DataType>, item_type, ConnectivityPtr> image; @@ -62,19 +62,17 @@ class ItemValue copy_to(const ItemValue<DataType, item_type, ConnectivityPtr>& source, const ItemValue<std::remove_const_t<DataType>, item_type, ConnectivityPtr2>& destination) { - Assert(destination.connectivity_ptr() == source.connectivity_ptr()); + Assert(destination.connectivity_ptr() == source.connectivity_ptr(), "different connectivities"); copy_to(source.m_values, destination.m_values); } - PUGS_INLINE - bool + [[nodiscard]] PUGS_INLINE bool isBuilt() const noexcept { return m_connectivity_ptr.use_count() != 0; } - PUGS_INLINE - std::shared_ptr<const IConnectivity> + [[nodiscard]] PUGS_INLINE std::shared_ptr<const IConnectivity> connectivity_ptr() const noexcept { if constexpr (std::is_same_v<ConnectivityPtr, ConnectivitySharedPtr>) { @@ -84,11 +82,10 @@ class ItemValue } } - PUGS_INLINE - size_t + [[nodiscard]] PUGS_INLINE size_t numberOfItems() const noexcept(NO_ASSERT) { - Assert(this->isBuilt()); + Assert(this->isBuilt(), "ItemValue is not built"); return m_values.size(); } @@ -101,11 +98,12 @@ class ItemValue } template <ItemType item_t> - PUGS_INLINE DataType& + [[nodiscard]] PUGS_INLINE DataType& operator[](const ItemIdT<item_t>& item_id) const noexcept(NO_ASSERT) { static_assert(item_t == item_type, "invalid ItemId type"); - Assert(this->isBuilt()); + Assert(this->isBuilt(), "ItemValue is not built"); + Assert(item_id < this->numberOfItems(), "invalid item_id"); return m_values[item_id]; } @@ -160,7 +158,7 @@ class ItemValue ItemValue(const IConnectivity& connectivity, const Array<DataType>& values) noexcept(NO_ASSERT) : m_connectivity_ptr{connectivity.shared_ptr()}, m_values{values} { - Assert((m_values.size() == connectivity.numberOf<item_type>()), "Invalid values size"); + Assert(m_values.size() == connectivity.numberOf<item_type>(), "invalid values size"); } PUGS_INLINE diff --git a/tests/test_ItemValue.cpp b/tests/test_ItemValue.cpp index be1307593d0ed8bff2c916d3162cccc34fb88536..702110f7a906654bb5e60676e1e0e2d4c7a7fc03 100644 --- a/tests/test_ItemValue.cpp +++ b/tests/test_ItemValue.cpp @@ -241,16 +241,16 @@ TEST_CASE("ItemValue", "[mesh]") SECTION("checking for build ItemValue") { CellValue<int> cell_value; - REQUIRE_THROWS_AS(cell_value[CellId{0}], AssertError); + REQUIRE_THROWS_WITH(cell_value[CellId{0}], "ItemValue is not built"); FaceValue<int> face_value; - REQUIRE_THROWS_AS(face_value[FaceId{0}], AssertError); + REQUIRE_THROWS_WITH(face_value[FaceId{0}], "ItemValue is not built"); EdgeValue<int> edge_value; - REQUIRE_THROWS_AS(edge_value[EdgeId{0}], AssertError); + REQUIRE_THROWS_WITH(edge_value[EdgeId{0}], "ItemValue is not built"); NodeValue<int> node_value; - REQUIRE_THROWS_AS(node_value[NodeId{0}], AssertError); + REQUIRE_THROWS_WITH(node_value[NodeId{0}], "ItemValue is not built"); } SECTION("checking for bounds violation") @@ -266,19 +266,19 @@ TEST_CASE("ItemValue", "[mesh]") CellValue<int> cell_value{connectivity}; CellId invalid_cell_id = connectivity.numberOfCells(); - REQUIRE_THROWS_AS(cell_value[invalid_cell_id], AssertError); + REQUIRE_THROWS_WITH(cell_value[invalid_cell_id], "invalid item_id"); FaceValue<int> face_value{connectivity}; FaceId invalid_face_id = connectivity.numberOfFaces(); - REQUIRE_THROWS_AS(face_value[invalid_face_id], AssertError); + REQUIRE_THROWS_WITH(face_value[invalid_face_id], "invalid item_id"); EdgeValue<int> edge_value{connectivity}; EdgeId invalid_edge_id = connectivity.numberOfEdges(); - REQUIRE_THROWS_AS(edge_value[invalid_edge_id], AssertError); + REQUIRE_THROWS_WITH(edge_value[invalid_edge_id], "invalid item_id"); NodeValue<int> node_value{connectivity}; NodeId invalid_node_id = connectivity.numberOfNodes(); - REQUIRE_THROWS_AS(node_value[invalid_node_id], AssertError); + REQUIRE_THROWS_WITH(node_value[invalid_node_id], "invalid item_id"); } } } @@ -295,7 +295,7 @@ TEST_CASE("ItemValue", "[mesh]") const Connectivity<3>& connectivity = mesh_3d->connectivity(); Array<size_t> values{3 + connectivity.numberOfCells()}; - REQUIRE_THROWS_WITH(CellValue<size_t>(connectivity, values), "Invalid values size"); + REQUIRE_THROWS_WITH(CellValue<size_t>(connectivity, values), "invalid values size"); } } } @@ -322,7 +322,7 @@ TEST_CASE("ItemValue", "[mesh]") CellValue<int> cell_2d_value{connectivity_2d}; CellValue<int> cell_3d_value{connectivity_3d}; - REQUIRE_THROWS_AS(copy_to(cell_2d_value, cell_3d_value), AssertError); + REQUIRE_THROWS_WITH(copy_to(cell_2d_value, cell_3d_value), "different connectivities"); } } }