2#include <gtest/gtest.h>
3#include <Unittests/unittests_common.hh>
4#include <OpenMesh/Core/Utils/PropertyManager.hh>
8class OpenMeshConvertTriangleMeshToPoly :
public OpenMeshBase {
13 virtual void SetUp() {
25 std::vector<Mesh::VertexHandle> face_vhandles;
27 face_vhandles.push_back(vhandle[2]);
28 face_vhandles.push_back(vhandle[1]);
29 face_vhandles.push_back(vhandle[0]);
30 mesh_.add_face(face_vhandles);
32 face_vhandles.clear();
34 face_vhandles.push_back(vhandle[2]);
35 face_vhandles.push_back(vhandle[0]);
36 face_vhandles.push_back(vhandle[3]);
37 mesh_.add_face(face_vhandles);
48 virtual void TearDown() {
62 virtual void SetUp() {
74 std::vector<Mesh::VertexHandle> face_vhandles;
76 face_vhandles.push_back(vhandle[2]);
77 face_vhandles.push_back(vhandle[1]);
78 face_vhandles.push_back(vhandle[0]);
79 face_vhandles.push_back(vhandle[3]);
80 mesh_.add_face(face_vhandles);
91 virtual void TearDown() {
109TEST_F(OpenMeshConvertTriangleMeshToPoly, VertexFaceCheck) {
111 EXPECT_EQ(4u, mesh_.n_vertices() ) <<
"Wrong number of vertices in TriMesh";
112 EXPECT_EQ(2u, mesh_.n_faces() ) <<
"Wrong number of faces in TriMesh";
118 EXPECT_EQ(4u, p.n_vertices() ) <<
"Wrong number of vertices in PolyMesh";
119 EXPECT_EQ(2u, p.n_faces() ) <<
"Wrong number of faces in PolyMesh";
124 EXPECT_EQ(5u, mesh_.n_vertices() ) <<
"Wrong number of vertices in TriMesh";
125 EXPECT_EQ(4u, p.n_vertices() ) <<
"Wrong number of vertices in PolyMesh";
129 mesh_.add_face(vhand,(*it),(*++it));
131 EXPECT_EQ(3u, mesh_.n_faces() ) <<
"Wrong number of faces in TriMesh";
132 EXPECT_EQ(2u, p.n_faces() ) <<
"Wrong number of faces in PolyMesh";
137TEST_F(OpenMeshConvertTriangleMeshToPoly, VertexPropertyCheckDouble) {
142 EXPECT_FALSE( mesh_.get_property_handle(doubleHandle,
"doubleProp") );
144 mesh_.add_property(doubleHandle,
"doubleProp");
149 for (
Mesh::VertexIter v_it = mesh_.vertices_begin() ; v_it != mesh_.vertices_end(); ++v_it ) {
150 mesh_.property(doubleHandle,*v_it) = index;
154 EXPECT_TRUE(mesh_.get_property_handle(doubleHandle,
"doubleProp"));
159 EXPECT_TRUE(p.get_property_handle(doubleHandle,
"doubleProp"));
163 EXPECT_EQ( p.property(doubleHandle,*v_it) , 0.0 ) <<
"Invalid double value for vertex 0";
166 EXPECT_EQ( p.property(doubleHandle,*v_it) , 1.0 ) <<
"Invalid double value for vertex 1";
169 EXPECT_EQ( p.property(doubleHandle,*v_it) , 2.0 ) <<
"Invalid double value for vertex 2";
172 EXPECT_EQ( p.property(doubleHandle,*v_it) , 3.0 ) <<
"Invalid double value for vertex 3";
175 mesh_.get_property_handle(doubleHandle,
"doubleProp");
176 mesh_.remove_property(doubleHandle);
177 EXPECT_FALSE(mesh_.get_property_handle(doubleHandle,
"doubleProp"));
178 EXPECT_TRUE(p.get_property_handle(doubleHandle,
"doubleProp"));
185TEST_F(OpenMeshConvertPolyMeshToTriangle, VertexFaceCheck) {
187 EXPECT_EQ(4u, mesh_.n_vertices() ) <<
"Wrong number of vertices in PolyMesh";
188 EXPECT_EQ(1u, mesh_.n_faces() ) <<
"Wrong number of faces in PolyMesh";
194 EXPECT_EQ(4u, p.n_vertices() ) <<
"Wrong number of vertices in TriMesh";
195 EXPECT_EQ(2u, p.n_faces() ) <<
"Wrong number of faces in TriMesh";
200 EXPECT_EQ(5u, mesh_.n_vertices() ) <<
"Wrong number of vertices in PolyMesh";
201 EXPECT_EQ(4u, p.n_vertices() ) <<
"Wrong number of vertices in TriMesh";
209 mesh_.add_face(vhand,vhand1,vhand2);
211 EXPECT_EQ(2u, mesh_.n_faces() ) <<
"Wrong number of faces in PolyMesh";
212 EXPECT_EQ(2u, p.n_faces() ) <<
"Wrong number of faces in TriMesh";
217TEST_F(OpenMeshConvertPolyMeshToTriangle, VertexPropertyCheckDouble) {
222 EXPECT_FALSE( mesh_.get_property_handle(doubleHandle,
"doubleProp") );
224 mesh_.add_property(doubleHandle,
"doubleProp");
229 for (
Mesh::VertexIter v_it = mesh_.vertices_begin() ; v_it != mesh_.vertices_end(); ++v_it ) {
230 mesh_.property(doubleHandle,*v_it) = index;
234 EXPECT_TRUE(mesh_.get_property_handle(doubleHandle,
"doubleProp"));
239 EXPECT_TRUE(p.get_property_handle(doubleHandle,
"doubleProp"));
243 EXPECT_EQ( p.property(doubleHandle,*v_it) , 0.0 ) <<
"Invalid double value for vertex 0";
246 EXPECT_EQ( p.property(doubleHandle,*v_it) , 1.0 ) <<
"Invalid double value for vertex 1";
249 EXPECT_EQ( p.property(doubleHandle,*v_it) , 2.0 ) <<
"Invalid double value for vertex 2";
252 EXPECT_EQ( p.property(doubleHandle,*v_it) , 3.0 ) <<
"Invalid double value for vertex 3";
255 mesh_.get_property_handle(doubleHandle,
"doubleProp");
256 mesh_.remove_property(doubleHandle);
257 EXPECT_FALSE(mesh_.get_property_handle(doubleHandle,
"doubleProp"));
258 EXPECT_TRUE(p.get_property_handle(doubleHandle,
"doubleProp"));
265TEST_F(OpenMeshConvertPolyMeshToTriangle, EdgePropertyCheckDouble) {
270 EXPECT_FALSE( mesh_.get_property_handle(doubleHandle,
"doubleProp") );
272 mesh_.add_property(doubleHandle,
"doubleProp");
277 for (
Mesh::EdgeIter v_it = mesh_.edges_begin() ; v_it != mesh_.edges_end(); ++v_it ) {
278 mesh_.property(doubleHandle,*v_it) = index;
282 EXPECT_TRUE(mesh_.get_property_handle(doubleHandle,
"doubleProp"));
287 EXPECT_TRUE(p.get_property_handle(doubleHandle,
"doubleProp"));
292 EXPECT_EQ( p.property(doubleHandle,*v_it) , 0.0 ) <<
"Invalid double value for vertex 0";
295 EXPECT_EQ( p.property(doubleHandle,*v_it) , 1.0 ) <<
"Invalid double value for vertex 1";
298 EXPECT_EQ( p.property(doubleHandle,*v_it) , 2.0 ) <<
"Invalid double value for vertex 2";
301 EXPECT_EQ( p.property(doubleHandle,*v_it) , 3.0 ) <<
"Invalid double value for vertex 3";
304 EXPECT_FALSE( p.is_boundary(*v_it)) <<
"Invalid Edge after triangulation";
307 mesh_.get_property_handle(doubleHandle,
"doubleProp");
308 mesh_.remove_property(doubleHandle);
309 EXPECT_FALSE(mesh_.get_property_handle(doubleHandle,
"doubleProp"));
310 EXPECT_TRUE(p.get_property_handle(doubleHandle,
"doubleProp"));
Kernel::VertexHandle VertexHandle
Handle for referencing the corresponding item.
SmartVertexHandle add_vertex(const Point _p)
Kernel::EdgeIter EdgeIter
Scalar type.
Kernel::Point Point
Coordinate type.
Kernel::VertexIter VertexIter
Scalar type.