From d1d39a7de1dea459e50dbb83b7c3b2e8c111c33a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20Vondru=C5=A1?= Date: Sat, 21 Apr 2012 22:02:22 +0200 Subject: [PATCH] MeshTools::Subdivide: added check for index count. --- src/MeshTools/Subdivide.h | 5 +++++ src/MeshTools/Test/SubdivideTest.cpp | 12 ++++++++++++ src/MeshTools/Test/SubdivideTest.h | 1 + 3 files changed, 18 insertions(+) diff --git a/src/MeshTools/Subdivide.h b/src/MeshTools/Subdivide.h index 9af3e580c..47e3a4997 100644 --- a/src/MeshTools/Subdivide.h +++ b/src/MeshTools/Subdivide.h @@ -32,6 +32,11 @@ template class Subdivide { inline Subdivide(std::vector& indices, std::vector& vertices): indices(indices), vertices(vertices) {} void operator()(Interpolator interpolator) { + if(indices.size()%3 != 0) { + Corrade::Utility::Error() << "MeshTools::subdivide(): index count is not divisible by 3!"; + return; + } + size_t indexCount = indices.size(); indices.reserve(indices.size()*4); diff --git a/src/MeshTools/Test/SubdivideTest.cpp b/src/MeshTools/Test/SubdivideTest.cpp index 0e1c8005d..7ebeb3b88 100644 --- a/src/MeshTools/Test/SubdivideTest.cpp +++ b/src/MeshTools/Test/SubdivideTest.cpp @@ -15,6 +15,7 @@ #include "SubdivideTest.h" +#include #include #include "MeshTools/Clean.h" @@ -23,9 +24,20 @@ QTEST_APPLESS_MAIN(Magnum::MeshTools::Test::SubdivideTest) using namespace std; +using namespace Corrade::Utility; namespace Magnum { namespace MeshTools { namespace Test { +void SubdivideTest::wrongIndexCount() { + stringstream ss; + Error::setOutput(&ss); + + vector vertices; + vector indices{0, 1}; + MeshTools::subdivide(indices, vertices, interpolator); + QVERIFY(ss.str() == "MeshTools::subdivide(): index count is not divisible by 3!\n"); +} + void SubdivideTest::subdivide() { vector vertices{0, 2, 6, 8}; vector indices{0, 1, 2, 1, 2, 3}; diff --git a/src/MeshTools/Test/SubdivideTest.h b/src/MeshTools/Test/SubdivideTest.h index d53006127..2f5da2656 100644 --- a/src/MeshTools/Test/SubdivideTest.h +++ b/src/MeshTools/Test/SubdivideTest.h @@ -23,6 +23,7 @@ class SubdivideTest: public QObject { Q_OBJECT private slots: + void wrongIndexCount(); void subdivide(); private: