Skip to content

Commit 6ac9620

Browse files
committed
Extend the simplex_faces test to tetrahedra.
1 parent 88a5eef commit 6ac9620

File tree

1 file changed

+46
-14
lines changed

1 file changed

+46
-14
lines changed

tests/test_simplex_collection.cpp

Lines changed: 46 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -138,20 +138,20 @@ TEST_CASE("simplex_collection_sorting", "[simplex_collection][2D]")
138138

139139
TEST_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

184216
TEST_CASE("simplex_faces_iterable", "[simplex_collection][2D]")

0 commit comments

Comments
 (0)