From a6302ac7d3c828f27ad761682588bc531c593f3d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20Vondru=C5=A1?= Date: Thu, 14 May 2020 18:09:31 +0200 Subject: [PATCH] MeshTools: test asserts in type-erased flipFaceWinding(). --- src/Magnum/MeshTools/Test/FlipNormalsTest.cpp | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/src/Magnum/MeshTools/Test/FlipNormalsTest.cpp b/src/Magnum/MeshTools/Test/FlipNormalsTest.cpp index a7782b981..8ed8efe30 100644 --- a/src/Magnum/MeshTools/Test/FlipNormalsTest.cpp +++ b/src/Magnum/MeshTools/Test/FlipNormalsTest.cpp @@ -40,10 +40,14 @@ struct FlipNormalsTest: TestSuite::Tester { void wrongIndexCount(); template void flipFaceWinding(); template void flipFaceWindingErased(); + void flipFaceWindingErasedNonContiguous(); + void flipFaceWindingErasedWrongIndexSize(); void flipNormals(); template void flipNormalsFaceWinding(); template void flipNormalsFaceWindingErased(); + /* Delegates into type-erased flipFaceWinding(), so testing asserts again + isn't needed */ }; FlipNormalsTest::FlipNormalsTest() { @@ -54,6 +58,8 @@ FlipNormalsTest::FlipNormalsTest() { &FlipNormalsTest::flipFaceWindingErased, &FlipNormalsTest::flipFaceWindingErased, &FlipNormalsTest::flipFaceWindingErased, + &FlipNormalsTest::flipFaceWindingErasedNonContiguous, + &FlipNormalsTest::flipFaceWindingErasedWrongIndexSize, &FlipNormalsTest::flipNormals, &FlipNormalsTest::flipNormalsFaceWinding, @@ -101,6 +107,34 @@ template void FlipNormalsTest::flipFaceWindingErased() { TestSuite::Compare::Container); } +void FlipNormalsTest::flipFaceWindingErasedNonContiguous() { + #ifdef CORRADE_NO_ASSERT + CORRADE_SKIP("CORRADE_NO_ASSERT defined, can't test assertions"); + #endif + + char indices[6*4]{}; + + std::stringstream out; + Error redirectError{&out}; + flipFaceWindingInPlace(Containers::StridedArrayView2D{indices, {6, 2}, {4, 2}}); + CORRADE_COMPARE(out.str(), + "MeshTools::flipFaceWindingInPlace(): second index view dimension is not contiguous\n"); +} + +void FlipNormalsTest::flipFaceWindingErasedWrongIndexSize() { + #ifdef CORRADE_NO_ASSERT + CORRADE_SKIP("CORRADE_NO_ASSERT defined, can't test assertions"); + #endif + + char indices[6*3]{}; + + std::stringstream out; + Error redirectError{&out}; + flipFaceWindingInPlace(Containers::StridedArrayView2D{indices, {6, 3}}); + CORRADE_COMPARE(out.str(), + "MeshTools::flipFaceWindingInPlace(): expected index type size 1, 2 or 4 but got 3\n"); +} + void FlipNormalsTest::flipNormals() { Vector3 normals[]{Vector3::xAxis(), Vector3::yAxis(), Vector3::zAxis()}; MeshTools::flipNormalsInPlace(normals);