@@ -138,20 +138,20 @@ TEST_CASE("simplex_collection_sorting", "[simplex_collection][2D]")
138138
139139TEST_CASE (" simplex_faces" , " [simplex_collection][2D]" )
140140{
141- tests::DEBUG_TriMesh m = tests::single_triangle ();
141+ tests_3d::DEBUG_TetMesh m = tests_3d::single_tet ();
142142
143- const Tuple t = m.edge_tuple_between_v1_v2 (0 , 1 , 0 );
143+ const Tuple t = m.switch_face (m. edge_tuple_between_v1_v2 (0 , 1 , 0 ) );
144144
145145 SECTION (" vertex" )
146146 {
147- SimplexCollection bd = faces (m, simplex:: Simplex::vertex (t));
147+ SimplexCollection bd = faces (m, Simplex::vertex (t));
148148 REQUIRE (bd.simplex_vector ().size () == 0 );
149149 }
150150 SECTION (" edge" )
151151 {
152- SimplexCollection bd = faces (m, simplex:: Simplex::edge (t));
152+ SimplexCollection bd = faces (m, Simplex::edge (t));
153153 REQUIRE (bd.simplex_vector ().size () == 2 );
154- const std::vector<simplex:: Simplex> v = bd.simplex_vector (PrimitiveType::Vertex);
154+ const std::vector<Simplex> v = bd.simplex_vector (PrimitiveType::Vertex);
155155 REQUIRE (v.size () == 2 );
156156 CHECK (m.id (v[0 ]) == 0 );
157157 CHECK (m.id (v[1 ]) == 1 );
@@ -162,23 +162,55 @@ TEST_CASE("simplex_faces", "[simplex_collection][2D]")
162162 }
163163 SECTION (" face" )
164164 {
165- SimplexCollection bd = faces (m, simplex:: Simplex::face (t));
165+ SimplexCollection bd = faces (m, Simplex::face (t));
166166 REQUIRE (bd.simplex_vector ().size () == 6 );
167- const std::vector<simplex:: Simplex> v = bd.simplex_vector (PrimitiveType::Vertex);
167+ const std::vector<Simplex> v = bd.simplex_vector (PrimitiveType::Vertex);
168168 CHECK (v.size () == 3 );
169- CHECK (m. id (v[ 0 ]) == 0 );
170- CHECK (m.id (v[1 ]) == 1 );
171- CHECK (m. id (v[ 2 ]) == 2 );
169+ for ( size_t i = 0 ; i < v. size (); ++i) {
170+ CHECK (m.id (v[i ]) == i );
171+ }
172172
173- const std::vector<simplex:: Simplex> e = bd.simplex_vector (PrimitiveType::Edge);
173+ const std::vector<Simplex> e = bd.simplex_vector (PrimitiveType::Edge);
174174 CHECK (e.size () == 3 );
175- CHECK (m.id (e[0 ]) == 0 );
176- CHECK (m.id (e[1 ]) == 1 );
177- CHECK (m.id (e[2 ]) == 2 );
175+ SimplexCollection expected_edges (m);
176+ expected_edges.add (Simplex::edge (m.edge_tuple_between_v1_v2 (0 , 1 , 0 )));
177+ expected_edges.add (Simplex::edge (m.edge_tuple_between_v1_v2 (1 , 2 , 0 )));
178+ expected_edges.add (Simplex::edge (m.edge_tuple_between_v1_v2 (2 , 0 , 0 )));
179+ expected_edges.sort_and_clean ();
180+ const std::vector<Simplex> expected_edge_simplices =
181+ expected_edges.simplex_vector (PrimitiveType::Edge);
182+ REQUIRE (e.size () <= 3 );
183+ for (size_t i = 0 ; i < e.size (); ++i) {
184+ CHECK (m.simplices_are_equal (e[i], expected_edge_simplices[i]));
185+ }
178186
179187 CHECK (bd.simplex_vector (PrimitiveType::Face).size () == 0 );
180188 CHECK (bd.simplex_vector (PrimitiveType::Tetrahedron).size () == 0 );
181189 }
190+ SECTION (" tetrahedron" )
191+ {
192+ SimplexCollection bd = faces (m, Simplex::tetrahedron (t));
193+ REQUIRE (bd.simplex_vector ().size () == 14 );
194+ const std::vector<Simplex> v = bd.simplex_vector (PrimitiveType::Vertex);
195+ CHECK (v.size () == 4 );
196+ for (size_t i = 0 ; i < v.size (); ++i) {
197+ CHECK (m.id (v[i]) == i);
198+ }
199+
200+ const std::vector<Simplex> e = bd.simplex_vector (PrimitiveType::Edge);
201+ CHECK (e.size () == 6 );
202+ for (size_t i = 0 ; i < e.size (); ++i) {
203+ CHECK (m.id (e[i]) == i);
204+ }
205+
206+
207+ const std::vector<Simplex> f = bd.simplex_vector (PrimitiveType::Face);
208+ CHECK (f.size () == 4 );
209+ for (size_t i = 0 ; i < f.size (); ++i) {
210+ CHECK (m.id (f[i]) == i);
211+ }
212+ CHECK (bd.simplex_vector (PrimitiveType::Tetrahedron).size () == 0 );
213+ }
182214}
183215
184216TEST_CASE (" simplex_faces_iterable" , " [simplex_collection][2D]" )
0 commit comments