From 681c98605bb04bd451a21aa0946cf2382907b3da Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20Vondru=C5=A1?= Date: Tue, 24 Jan 2023 23:14:00 +0100 Subject: [PATCH] MeshTools: have a separate assert message for input and output. Otherwise it may be hard to guess which of them is failing. *Ideally* the assert would also contain the stride vs type size, maybe I do that next time I spend that much time investigating why it asserts. --- src/Magnum/MeshTools/Duplicate.cpp | 6 ++++-- src/Magnum/MeshTools/Test/DuplicateTest.cpp | 7 ++++++- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/src/Magnum/MeshTools/Duplicate.cpp b/src/Magnum/MeshTools/Duplicate.cpp index 79ac1ea69..1c4b76079 100644 --- a/src/Magnum/MeshTools/Duplicate.cpp +++ b/src/Magnum/MeshTools/Duplicate.cpp @@ -39,8 +39,10 @@ namespace { template inline void duplicateIntoImplementation(const Containers::StridedArrayView1D& indices, const Containers::StridedArrayView2D& data, const Containers::StridedArrayView2D& out) { CORRADE_ASSERT(out.size()[0] == indices.size(), "MeshTools::duplicateInto(): index array and output size don't match, expected" << indices.size() << "but got" << out.size()[0], ); - CORRADE_ASSERT(data.isContiguous<1>() && out.isContiguous<1>(), - "MeshTools::duplicateInto(): second view dimension is not contiguous", ); + CORRADE_ASSERT(data.isContiguous<1>(), + "MeshTools::duplicateInto(): second data view dimension is not contiguous", ); + CORRADE_ASSERT(out.isContiguous<1>(), + "MeshTools::duplicateInto(): second output view dimension is not contiguous", ); CORRADE_ASSERT(data.size()[1] == out.size()[1], "MeshTools::duplicateInto(): input and output type size doesn't match, expected" << data.size()[1] << "but got" << out.size()[1], ); const std::size_t size = data.size()[1]; diff --git a/src/Magnum/MeshTools/Test/DuplicateTest.cpp b/src/Magnum/MeshTools/Test/DuplicateTest.cpp index e0d627d7d..3f60fb4d9 100644 --- a/src/Magnum/MeshTools/Test/DuplicateTest.cpp +++ b/src/Magnum/MeshTools/Test/DuplicateTest.cpp @@ -211,8 +211,13 @@ void DuplicateTest::duplicateIntoErasedNonContiguous() { Containers::stridedArrayView(indices), Containers::arrayCast<2, const char>(Containers::stridedArrayView(data)).every({1, 2}), Containers::arrayCast<2, char>(Containers::stridedArrayView(output))); + MeshTools::duplicateInto( + Containers::stridedArrayView(indices), + Containers::arrayCast<2, const char>(Containers::stridedArrayView(data)), + Containers::arrayCast<2, char>(Containers::stridedArrayView(output)).every({1, 2})); CORRADE_COMPARE(out.str(), - "MeshTools::duplicateInto(): second view dimension is not contiguous\n"); + "MeshTools::duplicateInto(): second data view dimension is not contiguous\n" + "MeshTools::duplicateInto(): second output view dimension is not contiguous\n"); } template void DuplicateTest::duplicateErasedIndicesIntoErased() {