1 #ifndef INCLUDE_UNITTESTS_TRIMESH_ITERATORS_HH
2 #define INCLUDE_UNITTESTS_TRIMESH_ITERATORS_HH
4 #include <gtest/gtest.h>
5 #include <Unittests/unittests_common.hh>
14 virtual void SetUp() {
18 virtual void TearDown() {
41 Mesh::VertexHandle vhandle[4];
43 vhandle[0] = mesh_.add_vertex(Mesh::Point(0, 0, 0));
44 vhandle[1] = mesh_.add_vertex(Mesh::Point(0, 1, 0));
45 vhandle[2] = mesh_.add_vertex(Mesh::Point(1, 1, 0));
46 vhandle[3] = mesh_.add_vertex(Mesh::Point(1, 0, 0));
49 std::vector<Mesh::VertexHandle> face_vhandles;
51 face_vhandles.push_back(vhandle[2]);
52 face_vhandles.push_back(vhandle[1]);
53 face_vhandles.push_back(vhandle[0]);
54 mesh_.add_face(face_vhandles);
56 face_vhandles.clear();
58 face_vhandles.push_back(vhandle[2]);
59 face_vhandles.push_back(vhandle[0]);
60 face_vhandles.push_back(vhandle[3]);
61 mesh_.add_face(face_vhandles);
70 Mesh::VertexIter v_it = mesh_.vertices_begin();
71 Mesh::VertexIter v_end = mesh_.vertices_end();
73 EXPECT_EQ(0, v_it.handle().idx()) <<
"Index wrong for vertex iterator vertices_begin()";
75 EXPECT_EQ(1, v_it.handle().idx()) <<
"Index wrong in vertex iterator";
77 EXPECT_EQ(2, v_it.handle().idx()) <<
"Index wrong in vertex iterator";
79 EXPECT_EQ(3, v_it.handle().idx()) <<
"Index wrong in vertex iterator";
81 EXPECT_EQ(4, v_it.handle().idx()) <<
"Index wrong in vertex iterator";
84 EXPECT_EQ(4, v_end.handle().idx()) <<
"Index wrong in vertex iterator for vertices_end()";
96 Mesh::VertexHandle vhandle[4];
98 vhandle[0] = mesh_.add_vertex(Mesh::Point(0, 0, 0));
99 vhandle[1] = mesh_.add_vertex(Mesh::Point(0, 1, 0));
100 vhandle[2] = mesh_.add_vertex(Mesh::Point(1, 1, 0));
101 vhandle[3] = mesh_.add_vertex(Mesh::Point(1, 0, 0));
104 std::vector<Mesh::VertexHandle> face_vhandles;
106 face_vhandles.push_back(vhandle[2]);
107 face_vhandles.push_back(vhandle[1]);
108 face_vhandles.push_back(vhandle[0]);
109 mesh_.add_face(face_vhandles);
111 face_vhandles.clear();
113 face_vhandles.push_back(vhandle[2]);
114 face_vhandles.push_back(vhandle[0]);
115 face_vhandles.push_back(vhandle[3]);
116 mesh_.add_face(face_vhandles);
126 Mesh::EdgeIter e_it = mesh_.edges_begin();
127 Mesh::EdgeIter e_end = mesh_.edges_end();
129 EXPECT_EQ(0, e_it.handle().idx()) <<
"Wrong start index in edge iterator";
130 EXPECT_EQ(5, e_end.handle().idx()) <<
"Wrong end index in edge iterator";
132 EXPECT_EQ(1, mesh_.to_vertex_handle(mesh_.halfedge_handle(e_it,0)).idx() ) <<
"1: Wrong to vertex handle of halfedge 0";
133 EXPECT_EQ(2, mesh_.from_vertex_handle(mesh_.halfedge_handle(e_it,0)).idx() ) <<
"1: Wrong from vertex handle of halfedge 0";
134 EXPECT_EQ(2, mesh_.to_vertex_handle(mesh_.halfedge_handle(e_it,1)).idx() ) <<
"1: Wrong to vertex handle of halfedge 1";
135 EXPECT_EQ(1, mesh_.from_vertex_handle(mesh_.halfedge_handle(e_it,1)).idx() ) <<
"1: Wrong from vertex handle of halfedge 1";
138 EXPECT_EQ(1, e_it.handle().idx()) <<
"Wrong index in edge iterator";
140 EXPECT_EQ(0, mesh_.to_vertex_handle(mesh_.halfedge_handle(e_it,0)).idx() ) <<
"2: Wrong to vertex handle of halfedge 0";
141 EXPECT_EQ(1, mesh_.from_vertex_handle(mesh_.halfedge_handle(e_it,0)).idx() ) <<
"2: Wrong from vertex handle of halfedge 0";
142 EXPECT_EQ(1, mesh_.to_vertex_handle(mesh_.halfedge_handle(e_it,1)).idx() ) <<
"2: Wrong to vertex handle of halfedge 1";
143 EXPECT_EQ(0, mesh_.from_vertex_handle(mesh_.halfedge_handle(e_it,1)).idx() ) <<
"2: Wrong from vertex handle of halfedge 1";
147 EXPECT_EQ(2, e_it.handle().idx()) <<
"Wrong index in edge iterator";
149 EXPECT_EQ(2, mesh_.to_vertex_handle(mesh_.halfedge_handle(e_it,0)).idx() ) <<
"3: Wrong to vertex handle of halfedge 0";
150 EXPECT_EQ(0, mesh_.from_vertex_handle(mesh_.halfedge_handle(e_it,0)).idx() ) <<
"3: Wrong from vertex handle of halfedge 0";
151 EXPECT_EQ(0, mesh_.to_vertex_handle(mesh_.halfedge_handle(e_it,1)).idx() ) <<
"3: Wrong to vertex handle of halfedge 1";
152 EXPECT_EQ(2, mesh_.from_vertex_handle(mesh_.halfedge_handle(e_it,1)).idx() ) <<
"3: Wrong from vertex handle of halfedge 1";
156 EXPECT_EQ(3, e_it.handle().idx()) <<
"Wrong index in edge iterator";
158 EXPECT_EQ(3, mesh_.to_vertex_handle(mesh_.halfedge_handle(e_it,0)).idx() ) <<
"4: Wrong to vertex handle of halfedge 0";
159 EXPECT_EQ(0, mesh_.from_vertex_handle(mesh_.halfedge_handle(e_it,0)).idx() ) <<
"4: Wrong from vertex handle of halfedge 0";
160 EXPECT_EQ(0, mesh_.to_vertex_handle(mesh_.halfedge_handle(e_it,1)).idx() ) <<
"4: Wrong to vertex handle of halfedge 1";
161 EXPECT_EQ(3, mesh_.from_vertex_handle(mesh_.halfedge_handle(e_it,1)).idx() ) <<
"4: Wrong from vertex handle of halfedge 1";
165 EXPECT_EQ(4, e_it.handle().idx()) <<
"Wrong index in edge iterator";
167 EXPECT_EQ(2, mesh_.to_vertex_handle(mesh_.halfedge_handle(e_it,0)).idx() ) <<
"5: Wrong to vertex handle of halfedge 0";
168 EXPECT_EQ(3, mesh_.from_vertex_handle(mesh_.halfedge_handle(e_it,0)).idx() ) <<
"5: Wrong from vertex handle of halfedge 0";
169 EXPECT_EQ(3, mesh_.to_vertex_handle(mesh_.halfedge_handle(e_it,1)).idx() ) <<
"5: Wrong to vertex handle of halfedge 1";
170 EXPECT_EQ(2, mesh_.from_vertex_handle(mesh_.halfedge_handle(e_it,1)).idx() ) <<
"5: Wrong from vertex handle of halfedge 1";
183 mesh_.request_vertex_status();
184 mesh_.request_edge_status();
185 mesh_.request_face_status();
188 Mesh::VertexHandle vhandle[4];
190 vhandle[0] = mesh_.add_vertex(Mesh::Point(0, 0, 0));
191 vhandle[1] = mesh_.add_vertex(Mesh::Point(0, 1, 0));
192 vhandle[2] = mesh_.add_vertex(Mesh::Point(1, 1, 0));
195 std::vector<Mesh::VertexHandle> face_vhandles;
197 face_vhandles.push_back(vhandle[2]);
198 face_vhandles.push_back(vhandle[1]);
199 face_vhandles.push_back(vhandle[0]);
200 Mesh::FaceHandle fh = mesh_.add_face(face_vhandles);
203 bool const is_delete_isolated_vertex =
false;
204 mesh_.delete_face(fh, is_delete_isolated_vertex);
213 Mesh::FaceIter f_it = mesh_.faces_begin();
214 Mesh::FaceIter f_end = mesh_.faces_end();
216 EXPECT_EQ(0, f_it.handle().idx()) <<
"Wrong start index in FaceIterator";
218 EXPECT_EQ(1, f_end.handle().idx()) <<
"Wrong end index in FaceIterator";
221 EXPECT_EQ(1, f_it.handle().idx()) <<
"Wrong end index in FaceIterator after one step";
222 EXPECT_TRUE(f_it == f_end ) <<
"Iterator not at end for FaceIterator after one step";
224 Mesh::ConstFaceIter cf_it = mesh_.faces_begin();
225 Mesh::ConstFaceIter cf_end = mesh_.faces_end();
227 EXPECT_EQ(0, cf_it.handle().idx()) <<
"Wrong start index in ConstFaceIterator";
229 EXPECT_EQ(1, cf_end.handle().idx()) <<
"Wrong end index in ConstFaceIterator";
232 EXPECT_EQ(1, cf_it.handle().idx()) <<
"Wrong end index in ConstFaceIterator after one step";
233 EXPECT_TRUE(cf_it == cf_end ) <<
"Iterator not at end for ConstFaceIterator after one step";
237 f_it = mesh_.faces_sbegin();
238 f_end = mesh_.faces_end();
240 EXPECT_EQ(1, f_it.handle().idx()) <<
"Wrong start index in FaceIterator with skipping";
242 EXPECT_EQ(1, f_end.handle().idx()) <<
"Wrong end index in FaceIterator with skipping";
244 EXPECT_TRUE(f_it == f_end ) <<
"Iterator not at end for FaceIterator with skipping";
247 cf_it = mesh_.faces_sbegin();
248 cf_end = mesh_.faces_end();
250 EXPECT_EQ(1, cf_it.handle().idx()) <<
"Wrong start index in ConstFaceIterator with skipping";
252 EXPECT_EQ(1, cf_end.handle().idx()) <<
"Wrong end index in ConstFaceIterator with skipping";
254 EXPECT_TRUE(cf_it == cf_end ) <<
"Iterator not at end for ConstFaceIterator with skipping";
257 mesh_.release_vertex_status();
258 mesh_.release_edge_status();
259 mesh_.release_face_status();
263 #endif // INCLUDE GUARD