Skip to content

Commit 9889c4a

Browse files
committed
Test NormalCollisions::to_string
1 parent b8ee7ae commit 9889c4a

File tree

1 file changed

+51
-0
lines changed

1 file changed

+51
-0
lines changed

tests/src/tests/collisions/test_normal_collisions.cpp

+51
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66
#include <ipc/collisions/normal/normal_collisions.hpp>
77
#include <ipc/potentials/barrier_potential.hpp>
88

9+
#include <igl/edges.h>
10+
911
using namespace ipc;
1012

1113
TEST_CASE("Codim. vertex-vertex collisions", "[collisions][codim]")
@@ -298,4 +300,53 @@ TEST_CASE("NormalCollisions::is_*", "[collisions]")
298300
CHECK(collisions.is_face_vertex(i) == (i == 3));
299301
CHECK(collisions.is_plane_vertex(i) == (i == 4));
300302
}
303+
}
304+
305+
TEST_CASE("NormalCollisions::to_string", "[collisions]")
306+
{
307+
const double dhat = 1e-1;
308+
309+
Eigen::MatrixXd vertices;
310+
Eigen::MatrixXi edges, faces;
311+
const bool success =
312+
tests::load_mesh("two-cubes-close.ply", vertices, edges, faces);
313+
REQUIRE(success);
314+
315+
CollisionMesh mesh(vertices, edges, faces);
316+
317+
NormalCollisions collisions;
318+
collisions.set_use_convergent_formulation(true);
319+
collisions.build(mesh, vertices, dhat);
320+
321+
std::sort(collisions.vv_collisions.begin(), collisions.vv_collisions.end());
322+
collisions.vv_collisions.erase(
323+
collisions.vv_collisions.begin() + 1,
324+
collisions.vv_collisions.end() - 1);
325+
326+
std::sort(collisions.ev_collisions.begin(), collisions.ev_collisions.end());
327+
collisions.ev_collisions.erase(
328+
collisions.ev_collisions.begin() + 1,
329+
collisions.ev_collisions.end() - 1);
330+
331+
std::sort(collisions.ee_collisions.begin(), collisions.ee_collisions.end());
332+
collisions.ee_collisions.erase(
333+
collisions.ee_collisions.begin() + 1,
334+
collisions.ee_collisions.end() - 1);
335+
336+
std::sort(collisions.fv_collisions.begin(), collisions.fv_collisions.end());
337+
collisions.fv_collisions.erase(
338+
collisions.fv_collisions.begin() + 1,
339+
collisions.fv_collisions.end() - 1);
340+
341+
std::string s = collisions.to_string(mesh, vertices);
342+
343+
CHECK(s == R"ipc_Qu8mg5v7(
344+
vv: 1 5, w: 1000, d: 0.000913492
345+
vv: 160 163, w: 1000, d: 0.000277936
346+
ev: 14=(24, 46) 205, w: 14.0559, d: 0.00500364
347+
ev: 719=(237, 261) 128, w: 12.2856, d: 0.00727213
348+
ee: 14=(24, 46) 456=(161, 205), w: -2.97853, dtype: 0, d: 0.00538125
349+
ee: 346=(76, 128) 718=(236, 261), w: -3.28539, dtype: 5, d: 0.00717647
350+
fv: 17=(46, 24, 72) 205, w: 13.7957, d: 0.00500269
351+
fv: 471=(155, 238, 259) 64, w: 16.0469, d: 0.00639199)ipc_Qu8mg5v7");
301352
}

0 commit comments

Comments
 (0)