diff --git a/src/Unittests/unittests_smoother.cc b/src/Unittests/unittests_smoother.cc new file mode 100644 index 00000000..46f5bb50 --- /dev/null +++ b/src/Unittests/unittests_smoother.cc @@ -0,0 +1,129 @@ + +#include +#include +#include + +namespace { + +class OpenMeshSmoother_Poly : public OpenMeshBasePoly { + + 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_; +}; + +class OpenMeshSmoother_Triangle : 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(OpenMeshSmoother_Triangle, Smoother_Poly_Laplace) { + + mesh_.clear(); + + + bool ok = OpenMesh::IO::read_mesh(mesh_, "cube1.off"); + + ASSERT_TRUE(ok); + + // Check setup + EXPECT_EQ(7526u, mesh_.n_vertices() ) << "Wrong number of vertices"; + EXPECT_EQ(15048u, mesh_.n_faces() ) << "Wrong number of faces"; + + + // Initialize subdivider + OpenMesh::Smoother::JacobiLaplaceSmootherT smoother(mesh_); + + // Just call function to instanciate template + smoother.set_absolute_local_error(0.5); + + // Set an error + smoother.set_relative_local_error(0.1); + + // Run algorithm with 5 steps + smoother.smooth(5); + + + EXPECT_EQ(7526u, mesh_.n_vertices() ) << "Wrong number of vertices after smoothing?"; + EXPECT_EQ(15048u, mesh_.n_faces() ) << "Wrong number of faces after smoothing?"; + +} + +/* + * ==================================================================== + * Define tests below + * ==================================================================== + */ + +/* + */ +TEST_F(OpenMeshSmoother_Poly, Smoother_Triangle_Laplace) { + + mesh_.clear(); + + + bool ok = OpenMesh::IO::read_mesh(mesh_, "cube1.off"); + + ASSERT_TRUE(ok); + + // Check setup + EXPECT_EQ(7526u, mesh_.n_vertices() ) << "Wrong number of vertices"; + EXPECT_EQ(15048u, mesh_.n_faces() ) << "Wrong number of faces"; + + + // Initialize subdivider + OpenMesh::Smoother::JacobiLaplaceSmootherT smoother(mesh_);; + + // Just call function to instantiate template + smoother.set_absolute_local_error(0.5); + + // Set an error + smoother.set_relative_local_error(0.1); + + // Run algorithm with 5 steps + smoother.smooth(5); + + + EXPECT_EQ(7526u, mesh_.n_vertices() ) << "Wrong number of vertices after smoothing?"; + EXPECT_EQ(15048u, mesh_.n_faces() ) << "Wrong number of faces after smoothing?"; + +} + + +}