Skip to content

Commit

Permalink
Add tests for octile_dist_exact.
Browse files Browse the repository at this point in the history
  • Loading branch information
CLIDragon committed Nov 7, 2024
1 parent 3758efa commit e7b9a21
Showing 1 changed file with 29 additions and 0 deletions.
29 changes: 29 additions & 0 deletions tests/line_test.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -465,3 +465,32 @@ TEST_CASE( "coord_point_line_to_consistency", "[point][coords][line]" )
CHECK( raw_line[i] == coord_line[i].raw() );
}
}

TEST_CASE("octile_dist_exact_tripoints") {
constexpr int one_axis = 1;
constexpr float two_axis = M_SQRT2;
constexpr float three_axis = 1.73205f;
constexpr float eps = 0.05f;

// Check that unit distances are all correct.
CHECK(octile_dist_exact(tripoint{ 0 , 0, 0 }, tripoint{ 0, 0, 0 }) == 0);
CHECK_THAT(octile_dist_exact(tripoint{ 0 , 0, 0 }, tripoint{ 0, 0, 1 }), Catch::Matchers::WithinRel(1, eps));
CHECK_THAT(octile_dist_exact(tripoint{ 0 , 0, 0 }, tripoint{ 0, 1, 0 }), Catch::Matchers::WithinRel(1, eps));
CHECK_THAT(octile_dist_exact(tripoint{ 0 , 0, 0 }, tripoint{ 1, 0, 0 }), Catch::Matchers::WithinRel(1, eps));
CHECK_THAT(octile_dist_exact(tripoint{ 10 , 30, 20 }, tripoint{ 11, 30, 20 }), Catch::Matchers::WithinRel(1, eps));
CHECK_THAT(octile_dist_exact(tripoint{ 10 , 30, 20 }, tripoint{ 10, 31, 20 }), Catch::Matchers::WithinRel(1, eps));
CHECK_THAT(octile_dist_exact(tripoint{ 10 , 30, 21 }, tripoint{ 10, 30, 21 }), Catch::Matchers::WithinRel(1, eps));

// Check that 2d unit distances are correct.
CHECK_THAT(octile_dist_exact(tripoint{ 0 , 0, 0 }, tripoint{ 0, 1, 1 }), Catch::Matchers::WithinRel(two_axis, eps));
CHECK_THAT(octile_dist_exact(tripoint{ 0 , 0, 0 }, tripoint{ 1, 0, 1 }), Catch::Matchers::WithinRel(two_axis, eps));
CHECK_THAT(octile_dist_exact(tripoint{ 0 , 0, 0 }, tripoint{ 1, 1, 0 }), Catch::Matchers::WithinRel(two_axis, eps));

// Check that 3d unit distances are correct.
CHECK_THAT(octile_dist_exact(tripoint{ 0 , 0, 0 }, tripoint{ 1, 1, 1 }), Catch::Matchers::WithinRel(three_axis, eps));
CHECK_THAT(octile_dist_exact(tripoint{ 2 , 4, 6 }, tripoint{ 3, 5, 7 }), Catch::Matchers::WithinRel(three_axis, eps));
CHECK_THAT(octile_dist_exact(tripoint{ 26 , 32, 75 }, tripoint{ 27, 33, 76 }), Catch::Matchers::WithinRel(three_axis, eps));

// Check a few non-unit distances.
CHECK_THAT(octile_dist_exact(tripoint{ 0 , 0, 0 }, tripoint{ 2, 2, 0 }), Catch::Matchers::WithinRel(2 * two_axis, eps));
}

0 comments on commit e7b9a21

Please sign in to comment.