diff --git a/src/Unittests/unittests.cc b/src/Unittests/unittests.cc index e40b35da..044b2cd2 100644 --- a/src/Unittests/unittests.cc +++ b/src/Unittests/unittests.cc @@ -1,6 +1,8 @@ #include +#include "unittests_common.hh" #include "unittests_loading.hh" +#include "unittests_decimater.hh" int main(int _argc, char** _argv) { diff --git a/src/Unittests/unittests_common.hh b/src/Unittests/unittests_common.hh new file mode 100644 index 00000000..cbf23f67 --- /dev/null +++ b/src/Unittests/unittests_common.hh @@ -0,0 +1,38 @@ +#ifndef INCLUDE_UNITTESTS_COMMON_HH +#define INCLUDE_UNITTESTS_COMMON_HH + +#include +#include + +#include + +struct CustomTraits : public OpenMesh::DefaultTraits { +}; + +typedef OpenMesh::TriMesh_ArrayKernelT Mesh; + +/* + * Simple test setting. + */ + +class OpenMeshBase : public testing::Test { + + protected: + + // This function is called before each test is run + virtual void SetUp() { + + // Do some initial stuff with the member data here... + } + + // This function is called after all tests are through + virtual void TearDown() { + + // Do some final stuff with the member data here... + } + + // This member will be accessible in all tests + Mesh mesh_; +}; + +#endif // INCLUDE GUARD diff --git a/src/Unittests/unittests_decimater.hh b/src/Unittests/unittests_decimater.hh new file mode 100644 index 00000000..6aae4613 --- /dev/null +++ b/src/Unittests/unittests_decimater.hh @@ -0,0 +1,62 @@ +#ifndef INCLUDE_UNITTESTS_DECIMATER_HH +#define INCLUDE_UNITTESTS_DECIMATER_HH + +#include +#include +#include +#include +#include + +class OpenMeshDecimater : public OpenMeshBase { + + protected: + + // This function is called before each test is run + virtual void SetUp() { + + // Do some initial stuff with the member data here... + } + + // This function is called after all tests are through + virtual void TearDown() { + + // Do some final stuff with the member data here... + } + + // Member already defined in OpenMeshBase + //Mesh mesh_; +}; + +/* + * ==================================================================== + * Define tests below + * ==================================================================== + */ + +/* + */ +TEST_F(OpenMeshDecimater, DecimateMesh) { + + bool ok = OpenMesh::IO::read_mesh(mesh_, "cube1.off"); + + ASSERT_TRUE(ok); + + typedef OpenMesh::Decimater::DecimaterT< Mesh > Decimater; + typedef OpenMesh::Decimater::ModQuadricT< Decimater >::Handle HModQuadric; + typedef OpenMesh::Decimater::ModNormalFlippingT< Decimater >::Handle HModNormal; + + Decimater decimaterDBG(mesh_); + HModQuadric hModQuadricDBG; + decimaterDBG.add( hModQuadricDBG ); + decimaterDBG.initialize(); + int removedVertices = 0; + removedVertices = decimaterDBG.decimate_to(5000); + decimaterDBG.mesh().garbage_collection(); + + EXPECT_EQ(2526, removedVertices) << "The number of remove vertices is not correct!"; + EXPECT_EQ(5000, mesh_.n_vertices()) << "The number of vertices after decimation is not correct!"; + EXPECT_EQ(14994, mesh_.n_edges()) << "The number of edges after decimation is not correct!"; + EXPECT_EQ(9996, mesh_.n_faces()) << "The number of faces after decimation is not correct!"; +} + +#endif // INCLUDE GUARD diff --git a/src/Unittests/unittests_loading.hh b/src/Unittests/unittests_loading.hh index 39a3da43..27173927 100644 --- a/src/Unittests/unittests_loading.hh +++ b/src/Unittests/unittests_loading.hh @@ -1,21 +1,11 @@ -#ifndef INCLUDE_UNITTESTS_LOADING_CC -#define INCLUDE_UNITTESTS_LOADING_CC +#ifndef INCLUDE_UNITTESTS_LOADING_HH +#define INCLUDE_UNITTESTS_LOADING_HH #include -#include +#include -#include -struct CustomTraits : public OpenMesh::DefaultTraits { -}; - -typedef OpenMesh::TriMesh_ArrayKernelT Mesh; - -/* - * Simple test setting. - */ - -class OpenMeshLoader : public testing::Test { +class OpenMeshLoader : public OpenMeshBase { protected: @@ -31,8 +21,8 @@ class OpenMeshLoader : public testing::Test { // Do some final stuff with the member data here... } - // This member will be accessible in all tests - Mesh mesh_; + // Member already defined in OpenMeshBase + //Mesh mesh_; }; /*