15 #include <gtest/gtest.h>
19 #include <range/v3/range/conversion.hpp>
27 [[nodiscard]]
static double resolution() {
return 1.; }
32 [[nodiscard]]
static double resolution() {
return 1.; }
35 TEST(RegularGrid2, NearestCells) {
36 const auto grid = TestRegularGrid2{};
38 EXPECT_EQ(grid.cell_near(Eigen::Vector2d(0, 0)), Eigen::Vector2i(0, 0));
39 EXPECT_EQ(grid.cell_near(Eigen::Vector2d(1.5, 0.5)), Eigen::Vector2i(1, 0));
42 TEST(RegularGrid2, CoordinatesAtCell) {
43 const auto grid = TestRegularGrid2{};
45 EXPECT_TRUE(grid.coordinates_at(Eigen::Vector2i(0, 0)).isApprox(Eigen::Vector2d(0.5, 0.5)));
46 EXPECT_TRUE(grid.coordinates_at(Eigen::Vector2i(1, 0)).isApprox(Eigen::Vector2d(1.5, 0.5)));
49 TEST(RegularGrid2, CoordinatesForCells) {
50 const auto grid = TestRegularGrid2{};
52 const auto cells = std::vector{Eigen::Vector2i(1, 0), Eigen::Vector2i(4, 1)};
53 const auto coordinates = grid.coordinates_for(cells) | ranges::to<std::vector>;
54 EXPECT_EQ(coordinates.size(), 2);
55 EXPECT_TRUE(coordinates[0].isApprox(Eigen::Vector2d(1.5, 0.5)));
56 EXPECT_TRUE(coordinates[1].isApprox(Eigen::Vector2d(4.5, 1.5)));
59 TEST(RegularGrid3, CoordinatesForCells) {
60 const auto grid = TestRegularGrid3{};
62 const auto cells = std::vector{Eigen::Vector3i(1, 0, 0), Eigen::Vector3i(4, 1, -1)};
63 const auto coordinates = grid.coordinates_for(cells) | ranges::to<std::vector>;
64 EXPECT_EQ(coordinates.size(), 2);
65 EXPECT_TRUE(coordinates[0].isApprox(Eigen::Vector3d(1.5, 0.5, 0.5)));
66 EXPECT_TRUE(coordinates[1].isApprox(Eigen::Vector3d(4.5, 1.5, -0.5)));