2 #include <gtest/gtest.h> 3 #include <Unittests/unittests_common.hh> 4 #include <OpenMesh/Core/Utils/PropertyManager.hh> 8 class 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() {
109 TEST_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";
115 PolyMesh p =
static_cast<PolyMesh
>(mesh_);
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";
127 Mesh::VertexIter it = mesh_.vertices_begin();
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";
137 TEST_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"));
157 PolyMesh p =
static_cast<PolyMesh
>(mesh_);
159 EXPECT_TRUE(p.get_property_handle(doubleHandle,
"doubleProp"));
162 Mesh::VertexIter v_it = p.vertices_begin();
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"));
185 TEST_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";
203 Mesh::VertexIter it = mesh_.vertices_begin();
205 mesh_.add_face(vhand,(*it),(*++it));
207 EXPECT_EQ(2u, mesh_.n_faces() ) <<
"Wrong number of faces in PolyMesh";
208 EXPECT_EQ(2u, p.n_faces() ) <<
"Wrong number of faces in TriMesh";
213 TEST_F(OpenMeshConvertPolyMeshToTriangle, VertexPropertyCheckDouble) {
218 EXPECT_FALSE( mesh_.get_property_handle(doubleHandle,
"doubleProp") );
220 mesh_.add_property(doubleHandle,
"doubleProp");
225 for ( Mesh::VertexIter v_it = mesh_.vertices_begin() ; v_it != mesh_.vertices_end(); ++v_it ) {
226 mesh_.property(doubleHandle,*v_it) = index;
230 EXPECT_TRUE(mesh_.get_property_handle(doubleHandle,
"doubleProp"));
235 EXPECT_TRUE(p.get_property_handle(doubleHandle,
"doubleProp"));
238 Mesh::VertexIter v_it = p.vertices_begin();
239 EXPECT_EQ( p.property(doubleHandle,*v_it) , 0.0 ) <<
"Invalid double value for vertex 0";
242 EXPECT_EQ( p.property(doubleHandle,*v_it) , 1.0 ) <<
"Invalid double value for vertex 1";
245 EXPECT_EQ( p.property(doubleHandle,*v_it) , 2.0 ) <<
"Invalid double value for vertex 2";
248 EXPECT_EQ( p.property(doubleHandle,*v_it) , 3.0 ) <<
"Invalid double value for vertex 3";
251 mesh_.get_property_handle(doubleHandle,
"doubleProp");
252 mesh_.remove_property(doubleHandle);
253 EXPECT_FALSE(mesh_.get_property_handle(doubleHandle,
"doubleProp"));
254 EXPECT_TRUE(p.get_property_handle(doubleHandle,
"doubleProp"));
261 TEST_F(OpenMeshConvertPolyMeshToTriangle, EdgePropertyCheckDouble) {
266 EXPECT_FALSE( mesh_.get_property_handle(doubleHandle,
"doubleProp") );
268 mesh_.add_property(doubleHandle,
"doubleProp");
273 for ( Mesh::EdgeIter v_it = mesh_.edges_begin() ; v_it != mesh_.edges_end(); ++v_it ) {
274 mesh_.property(doubleHandle,*v_it) = index;
278 EXPECT_TRUE(mesh_.get_property_handle(doubleHandle,
"doubleProp"));
283 EXPECT_TRUE(p.get_property_handle(doubleHandle,
"doubleProp"));
286 Mesh::EdgeIter v_it = p.edges_begin();
288 EXPECT_EQ( p.property(doubleHandle,*v_it) , 0.0 ) <<
"Invalid double value for vertex 0";
291 EXPECT_EQ( p.property(doubleHandle,*v_it) , 1.0 ) <<
"Invalid double value for vertex 1";
294 EXPECT_EQ( p.property(doubleHandle,*v_it) , 2.0 ) <<
"Invalid double value for vertex 2";
297 EXPECT_EQ( p.property(doubleHandle,*v_it) , 3.0 ) <<
"Invalid double value for vertex 3";
300 EXPECT_FALSE( p.is_boundary(*v_it)) <<
"Invalid Edge after triangulation";
303 mesh_.get_property_handle(doubleHandle,
"doubleProp");
304 mesh_.remove_property(doubleHandle);
305 EXPECT_FALSE(mesh_.get_property_handle(doubleHandle,
"doubleProp"));
306 EXPECT_TRUE(p.get_property_handle(doubleHandle,
"doubleProp"));
Kernel::Point Point
Coordinate type.
SmartVertexHandle add_vertex(const Point &_p)
Alias for new_vertex(const Point&).
Kernel::VertexHandle VertexHandle
Handle for referencing the corresponding item.