From 2eaa79c792b5f6dd0d87dab45e751d8578557982 Mon Sep 17 00:00:00 2001 From: Zachary Ferguson Date: Fri, 13 Oct 2023 14:44:06 -0400 Subject: [PATCH 1/2] Fix project_to_psd assertion --- src/ipc/utils/eigen_ext.tpp | 4 ++-- tests/ccd/test_ccd_benchmark.cpp | 4 ++-- tests/ccd/test_edge_edge_ccd.cpp | 6 +++--- tests/ccd/test_point_triangle_ccd.cpp | 4 ++-- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/ipc/utils/eigen_ext.tpp b/src/ipc/utils/eigen_ext.tpp index 9dfe9eed1..41bc55633 100644 --- a/src/ipc/utils/eigen_ext.tpp +++ b/src/ipc/utils/eigen_ext.tpp @@ -22,7 +22,7 @@ project_to_pd( double eps) { assert(eps > 0); - assert(A == A.transpose() && "A must be symmetric"); + assert(A.isApprox(A.transpose()) && "A must be symmetric"); // https://math.stackexchange.com/q/2776803 Eigen::SelfAdjointEigenSolver< @@ -63,7 +63,7 @@ Eigen::Matrix<_Scalar, _Rows, _Cols, _Options, _MaxRows, _MaxCols> project_to_psd( const Eigen::Matrix<_Scalar, _Rows, _Cols, _Options, _MaxRows, _MaxCols>& A) { - assert(A == A.transpose() && "A must be symmetric"); + assert(A.isApprox(A.transpose()) && "A must be symmetric"); // https://math.stackexchange.com/q/2776803 Eigen::SelfAdjointEigenSolver< diff --git a/tests/ccd/test_ccd_benchmark.cpp b/tests/ccd/test_ccd_benchmark.cpp index 1f02ed67a..502da906b 100644 --- a/tests/ccd/test_ccd_benchmark.cpp +++ b/tests/ccd/test_ccd_benchmark.cpp @@ -158,7 +158,7 @@ void run_benchmark( if (result < expected_result) { fmt::print("\n"); } - CHECK(result >= expected_result); // false positive is ok + CHECK(result || !expected_result); // false positive is ok } } } @@ -256,7 +256,7 @@ TEST_CASE( // V.row(0), V.row(1), V.row(2), V.row(3), V.row(4), V.row(5), // V.row(6), V.row(7), toi); // // } -// CHECK(result >= expected_result); // false positive is ok +// CHECK(result || !expected_result); // false positive is ok // } // } // } diff --git a/tests/ccd/test_edge_edge_ccd.cpp b/tests/ccd/test_edge_edge_ccd.cpp index 16fe7c867..7ae6e36da 100644 --- a/tests/ccd/test_edge_edge_ccd.cpp +++ b/tests/ccd/test_edge_edge_ccd.cpp @@ -136,7 +136,7 @@ TEST_CASE("Edge-Edge CCD", "[ccd][3D][edge-edge][!mayfail]") eb1_t1 = eb1_t0 + Eigen::Vector3d(-scale, -dy, -scale); // this ternary operator is to force MSVC to use 1 or 0 - is_collision_expected = dy >= d0 / 2 ? true : false; + is_collision_expected = dy >= d0 / 2; conservative_check = false; } CAPTURE(int(is_collision_expected)); @@ -146,7 +146,7 @@ TEST_CASE("Edge-Edge CCD", "[ccd][3D][edge-edge][!mayfail]") ea0_t0, ea1_t0, eb0_t0, eb1_t0, ea0_t1, ea1_t1, eb0_t1, eb1_t1, toi, /*min_distance=*/0.0, tmax, tol, max_iter); if (conservative_check) { - CHECK(is_colliding >= is_collision_expected); + CHECK(is_colliding || !is_collision_expected); } else { CHECK(is_colliding == is_collision_expected); } @@ -155,7 +155,7 @@ TEST_CASE("Edge-Edge CCD", "[ccd][3D][edge-edge][!mayfail]") ea0_t0, ea1_t0, eb0_t0, eb1_t0, ea0_t1, ea1_t1, eb0_t1, eb1_t1, toi, /*min_distance=*/0.0, tmax); if (conservative_check) { - CHECK(is_colliding >= is_collision_expected); + CHECK(is_colliding || !is_collision_expected); } else { CHECK(is_colliding == is_collision_expected); } diff --git a/tests/ccd/test_point_triangle_ccd.cpp b/tests/ccd/test_point_triangle_ccd.cpp index c7fee8d4a..e9acb4f21 100644 --- a/tests/ccd/test_point_triangle_ccd.cpp +++ b/tests/ccd/test_point_triangle_ccd.cpp @@ -97,7 +97,7 @@ TEST_CASE("Point-Triangle CCD", "[ccd][3D][point-triangle][!mayfail]") p_t0, t0_t0, t1_t0, t2_t0, p_t1, t0_t1, t1_t1, t2_t1, toi); if (conservative_check) { - CHECK(is_colliding >= is_collision_expected); + CHECK(is_colliding || !is_collision_expected); } else { CHECK(is_colliding == is_collision_expected); } @@ -105,7 +105,7 @@ TEST_CASE("Point-Triangle CCD", "[ccd][3D][point-triangle][!mayfail]") is_colliding = additive_ccd::point_triangle_ccd( p_t0, t0_t0, t1_t0, t2_t0, p_t1, t0_t1, t1_t1, t2_t1, toi); if (conservative_check) { - CHECK(is_colliding >= is_collision_expected); + CHECK(is_colliding || !is_collision_expected); } else { CHECK(is_colliding == is_collision_expected); } From 3b9f66a523f9a8c7917333d4d5b003e833a5d3f3 Mon Sep 17 00:00:00 2001 From: Zachary Ferguson Date: Fri, 13 Oct 2023 14:57:13 -0400 Subject: [PATCH 2/2] Fix CHECKs --- tests/ccd/test_ccd_benchmark.cpp | 2 +- tests/ccd/test_edge_edge_ccd.cpp | 4 ++-- tests/ccd/test_point_triangle_ccd.cpp | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/tests/ccd/test_ccd_benchmark.cpp b/tests/ccd/test_ccd_benchmark.cpp index 502da906b..bce698f39 100644 --- a/tests/ccd/test_ccd_benchmark.cpp +++ b/tests/ccd/test_ccd_benchmark.cpp @@ -158,7 +158,7 @@ void run_benchmark( if (result < expected_result) { fmt::print("\n"); } - CHECK(result || !expected_result); // false positive is ok + CHECK((result || !expected_result)); // false positive is ok } } } diff --git a/tests/ccd/test_edge_edge_ccd.cpp b/tests/ccd/test_edge_edge_ccd.cpp index 7ae6e36da..1beaf39b9 100644 --- a/tests/ccd/test_edge_edge_ccd.cpp +++ b/tests/ccd/test_edge_edge_ccd.cpp @@ -146,7 +146,7 @@ TEST_CASE("Edge-Edge CCD", "[ccd][3D][edge-edge][!mayfail]") ea0_t0, ea1_t0, eb0_t0, eb1_t0, ea0_t1, ea1_t1, eb0_t1, eb1_t1, toi, /*min_distance=*/0.0, tmax, tol, max_iter); if (conservative_check) { - CHECK(is_colliding || !is_collision_expected); + CHECK((is_colliding || !is_collision_expected)); } else { CHECK(is_colliding == is_collision_expected); } @@ -155,7 +155,7 @@ TEST_CASE("Edge-Edge CCD", "[ccd][3D][edge-edge][!mayfail]") ea0_t0, ea1_t0, eb0_t0, eb1_t0, ea0_t1, ea1_t1, eb0_t1, eb1_t1, toi, /*min_distance=*/0.0, tmax); if (conservative_check) { - CHECK(is_colliding || !is_collision_expected); + CHECK((is_colliding || !is_collision_expected)); } else { CHECK(is_colliding == is_collision_expected); } diff --git a/tests/ccd/test_point_triangle_ccd.cpp b/tests/ccd/test_point_triangle_ccd.cpp index e9acb4f21..84ecf6f66 100644 --- a/tests/ccd/test_point_triangle_ccd.cpp +++ b/tests/ccd/test_point_triangle_ccd.cpp @@ -97,7 +97,7 @@ TEST_CASE("Point-Triangle CCD", "[ccd][3D][point-triangle][!mayfail]") p_t0, t0_t0, t1_t0, t2_t0, p_t1, t0_t1, t1_t1, t2_t1, toi); if (conservative_check) { - CHECK(is_colliding || !is_collision_expected); + CHECK((is_colliding || !is_collision_expected)); } else { CHECK(is_colliding == is_collision_expected); } @@ -105,7 +105,7 @@ TEST_CASE("Point-Triangle CCD", "[ccd][3D][point-triangle][!mayfail]") is_colliding = additive_ccd::point_triangle_ccd( p_t0, t0_t0, t1_t0, t2_t0, p_t1, t0_t1, t1_t1, t2_t1, toi); if (conservative_check) { - CHECK(is_colliding || !is_collision_expected); + CHECK((is_colliding || !is_collision_expected)); } else { CHECK(is_colliding == is_collision_expected); }