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();
74 EXPECT_EQ(0, v_it.handle().idx()) <<
"Index wrong for vertex iterator vertices_begin()";
76 EXPECT_EQ(1, v_it.handle().idx()) <<
"Index wrong in vertex iterator";
78 EXPECT_EQ(2, v_it.handle().idx()) <<
"Index wrong in vertex iterator";
80 EXPECT_EQ(3, v_it.handle().idx()) <<
"Index wrong in vertex iterator";
82 EXPECT_EQ(4, v_it.handle().idx()) <<
"Index wrong in vertex iterator";
85 EXPECT_EQ(4, v_end.handle().idx()) <<
"Index wrong in vertex iterator for vertices_end()";
97 Mesh::VertexHandle vhandle[4];
99 vhandle[0] = mesh_.add_vertex(Mesh::Point(0, 0, 0));
100 vhandle[1] = mesh_.add_vertex(Mesh::Point(0, 1, 0));
101 vhandle[2] = mesh_.add_vertex(Mesh::Point(1, 1, 0));
102 vhandle[3] = mesh_.add_vertex(Mesh::Point(1, 0, 0));
105 std::vector<Mesh::VertexHandle> face_vhandles;
107 face_vhandles.push_back(vhandle[2]);
108 face_vhandles.push_back(vhandle[1]);
109 face_vhandles.push_back(vhandle[0]);
110 mesh_.add_face(face_vhandles);
112 face_vhandles.clear();
114 face_vhandles.push_back(vhandle[2]);
115 face_vhandles.push_back(vhandle[0]);
116 face_vhandles.push_back(vhandle[3]);
117 mesh_.add_face(face_vhandles);
127 Mesh::EdgeIter e_it = mesh_.edges_begin();
128 Mesh::EdgeIter e_end = mesh_.edges_end();
130 EXPECT_EQ(0, e_it.handle().idx()) <<
"Wrong start index in edge iterator";
131 EXPECT_EQ(5, e_end.handle().idx()) <<
"Wrong end index in edge iterator";
133 EXPECT_EQ(1, mesh_.to_vertex_handle(mesh_.halfedge_handle(e_it,0)).idx() ) <<
"1: Wrong to vertex handle of halfedge 0";
134 EXPECT_EQ(2, mesh_.from_vertex_handle(mesh_.halfedge_handle(e_it,0)).idx() ) <<
"1: Wrong from vertex handle of halfedge 0";
135 EXPECT_EQ(2, mesh_.to_vertex_handle(mesh_.halfedge_handle(e_it,1)).idx() ) <<
"1: Wrong to vertex handle of halfedge 1";
136 EXPECT_EQ(1, mesh_.from_vertex_handle(mesh_.halfedge_handle(e_it,1)).idx() ) <<
"1: Wrong from vertex handle of halfedge 1";
139 EXPECT_EQ(1, e_it.handle().idx()) <<
"Wrong index in edge iterator";
141 EXPECT_EQ(0, mesh_.to_vertex_handle(mesh_.halfedge_handle(e_it,0)).idx() ) <<
"2: Wrong to vertex handle of halfedge 0";
142 EXPECT_EQ(1, mesh_.from_vertex_handle(mesh_.halfedge_handle(e_it,0)).idx() ) <<
"2: Wrong from vertex handle of halfedge 0";
143 EXPECT_EQ(1, mesh_.to_vertex_handle(mesh_.halfedge_handle(e_it,1)).idx() ) <<
"2: Wrong to vertex handle of halfedge 1";
144 EXPECT_EQ(0, mesh_.from_vertex_handle(mesh_.halfedge_handle(e_it,1)).idx() ) <<
"2: Wrong from vertex handle of halfedge 1";
148 EXPECT_EQ(2, e_it.handle().idx()) <<
"Wrong index in edge iterator";
150 EXPECT_EQ(2, mesh_.to_vertex_handle(mesh_.halfedge_handle(e_it,0)).idx() ) <<
"3: Wrong to vertex handle of halfedge 0";
151 EXPECT_EQ(0, mesh_.from_vertex_handle(mesh_.halfedge_handle(e_it,0)).idx() ) <<
"3: Wrong from vertex handle of halfedge 0";
152 EXPECT_EQ(0, mesh_.to_vertex_handle(mesh_.halfedge_handle(e_it,1)).idx() ) <<
"3: Wrong to vertex handle of halfedge 1";
153 EXPECT_EQ(2, mesh_.from_vertex_handle(mesh_.halfedge_handle(e_it,1)).idx() ) <<
"3: Wrong from vertex handle of halfedge 1";
157 EXPECT_EQ(3, e_it.handle().idx()) <<
"Wrong index in edge iterator";
159 EXPECT_EQ(3, mesh_.to_vertex_handle(mesh_.halfedge_handle(e_it,0)).idx() ) <<
"4: Wrong to vertex handle of halfedge 0";
160 EXPECT_EQ(0, mesh_.from_vertex_handle(mesh_.halfedge_handle(e_it,0)).idx() ) <<
"4: Wrong from vertex handle of halfedge 0";
161 EXPECT_EQ(0, mesh_.to_vertex_handle(mesh_.halfedge_handle(e_it,1)).idx() ) <<
"4: Wrong to vertex handle of halfedge 1";
162 EXPECT_EQ(3, mesh_.from_vertex_handle(mesh_.halfedge_handle(e_it,1)).idx() ) <<
"4: Wrong from vertex handle of halfedge 1";
166 EXPECT_EQ(4, e_it.handle().idx()) <<
"Wrong index in edge iterator";
168 EXPECT_EQ(2, mesh_.to_vertex_handle(mesh_.halfedge_handle(e_it,0)).idx() ) <<
"5: Wrong to vertex handle of halfedge 0";
169 EXPECT_EQ(3, mesh_.from_vertex_handle(mesh_.halfedge_handle(e_it,0)).idx() ) <<
"5: Wrong from vertex handle of halfedge 0";
170 EXPECT_EQ(3, mesh_.to_vertex_handle(mesh_.halfedge_handle(e_it,1)).idx() ) <<
"5: Wrong to vertex handle of halfedge 1";
171 EXPECT_EQ(2, mesh_.from_vertex_handle(mesh_.halfedge_handle(e_it,1)).idx() ) <<
"5: Wrong from vertex handle of halfedge 1";
184 mesh_.request_vertex_status();
185 mesh_.request_edge_status();
186 mesh_.request_face_status();
189 Mesh::VertexHandle vhandle[4];
191 vhandle[0] = mesh_.add_vertex(Mesh::Point(0, 0, 0));
192 vhandle[1] = mesh_.add_vertex(Mesh::Point(0, 1, 0));
193 vhandle[2] = mesh_.add_vertex(Mesh::Point(1, 1, 0));
196 std::vector<Mesh::VertexHandle> face_vhandles;
198 face_vhandles.push_back(vhandle[2]);
199 face_vhandles.push_back(vhandle[1]);
200 face_vhandles.push_back(vhandle[0]);
201 Mesh::FaceHandle fh = mesh_.add_face(face_vhandles);
204 bool const is_delete_isolated_vertex =
false;
205 mesh_.delete_face(fh, is_delete_isolated_vertex);
214 Mesh::FaceIter f_it = mesh_.faces_begin();
215 Mesh::FaceIter f_end = mesh_.faces_end();
217 EXPECT_EQ(0, f_it.handle().idx()) <<
"Wrong start index in FaceIterator";
219 EXPECT_EQ(1, f_end.handle().idx()) <<
"Wrong end index in FaceIterator";
222 EXPECT_EQ(1, f_it.handle().idx()) <<
"Wrong end index in FaceIterator after one step";
223 EXPECT_TRUE(f_it == f_end ) <<
"Iterator not at end for FaceIterator after one step";
225 Mesh::ConstFaceIter cf_it = mesh_.faces_begin();
226 Mesh::ConstFaceIter cf_end = mesh_.faces_end();
228 EXPECT_EQ(0, cf_it.handle().idx()) <<
"Wrong start index in ConstFaceIterator";
230 EXPECT_EQ(1, cf_end.handle().idx()) <<
"Wrong end index in ConstFaceIterator";
233 EXPECT_EQ(1, cf_it.handle().idx()) <<
"Wrong end index in ConstFaceIterator after one step";
234 EXPECT_TRUE(cf_it == cf_end ) <<
"Iterator not at end for ConstFaceIterator after one step";
238 f_it = mesh_.faces_sbegin();
239 f_end = mesh_.faces_end();
241 EXPECT_EQ(1, f_it.handle().idx()) <<
"Wrong start index in FaceIterator with skipping";
243 EXPECT_EQ(1, f_end.handle().idx()) <<
"Wrong end index in FaceIterator with skipping";
245 EXPECT_TRUE(f_it == f_end ) <<
"Iterator not at end for FaceIterator with skipping";
248 cf_it = mesh_.faces_sbegin();
249 cf_end = mesh_.faces_end();
251 EXPECT_EQ(1, cf_it.handle().idx()) <<
"Wrong start index in ConstFaceIterator with skipping";
253 EXPECT_EQ(1, cf_end.handle().idx()) <<
"Wrong end index in ConstFaceIterator with skipping";
255 EXPECT_TRUE(cf_it == cf_end ) <<
"Iterator not at end for ConstFaceIterator with skipping";
258 mesh_.release_vertex_status();
259 mesh_.release_edge_status();
260 mesh_.release_face_status();
264 #endif // INCLUDE GUARD