Browse Source

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.
pull/601/head
Vladimír Vondruš 3 years ago
parent
commit
681c98605b
  1. 6
      src/Magnum/MeshTools/Duplicate.cpp
  2. 7
      src/Magnum/MeshTools/Test/DuplicateTest.cpp

6
src/Magnum/MeshTools/Duplicate.cpp

@ -39,8 +39,10 @@ namespace {
template<class T> inline void duplicateIntoImplementation(const Containers::StridedArrayView1D<const T>& indices, const Containers::StridedArrayView2D<const char>& data, const Containers::StridedArrayView2D<char>& 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];

7
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<class T> void DuplicateTest::duplicateErasedIndicesIntoErased() {

Loading…
Cancel
Save