Browse Source

MeshTools::Subdivide: added check for index count.

vectorfields
Vladimír Vondruš 14 years ago
parent
commit
d1d39a7de1
  1. 5
      src/MeshTools/Subdivide.h
  2. 12
      src/MeshTools/Test/SubdivideTest.cpp
  3. 1
      src/MeshTools/Test/SubdivideTest.h

5
src/MeshTools/Subdivide.h

@ -32,6 +32,11 @@ template<class Vertex, class Interpolator> class Subdivide {
inline Subdivide(std::vector<unsigned int>& indices, std::vector<Vertex>& 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);

12
src/MeshTools/Test/SubdivideTest.cpp

@ -15,6 +15,7 @@
#include "SubdivideTest.h"
#include <sstream>
#include <QtTest/QTest>
#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<Vector1> vertices;
vector<unsigned int> 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<Vector1> vertices{0, 2, 6, 8};
vector<unsigned int> indices{0, 1, 2, 1, 2, 3};

1
src/MeshTools/Test/SubdivideTest.h

@ -23,6 +23,7 @@ class SubdivideTest: public QObject {
Q_OBJECT
private slots:
void wrongIndexCount();
void subdivide();
private:

Loading…
Cancel
Save