maze-cpp/tests/Distances.cpp

41 lines
1.7 KiB
C++

#include <catch2/catch_test_macros.hpp>
#include "Distances.h"
#include "Grid.h"
TEST_CASE("Distances class tests", "[distances]") {
Grid grid(3, 3);
SECTION("Distance from start to start is 0", "[distances]") {
auto distances = Distances(grid.getCellRef(0, 0));
REQUIRE(distances.getDistance(grid.getCellRef(0, 0)) == 0);
}
SECTION("Distance can be set and retrieved", "[distances]") {
auto distances = Distances(grid.getCellRef(0, 0));
distances.setDistance(grid.getCellRef(2, 2), 2);
REQUIRE(distances.getDistance(grid.getCellRef(2, 2)) == 2);
distances.setDistance(grid.getCellRef(2, 2), 3);
REQUIRE(distances.getDistance(grid.getCellRef(2, 2)) == 3);
}
SECTION("Can get list of cells in Distance", "[distances]") {
auto distances = Distances(grid.getCellRef(0, 0));
distances.setDistance(grid.getCellRef(2, 2), 2);
distances.setDistance(grid.getCellRef(1, 1), 1);
distances.setDistance(grid.getCellRef(0, 2), 3);
auto cells = distances.getCells();
REQUIRE(cells.size() == 4);
REQUIRE(std::find_if(cells.begin(), cells.end(), [&grid](const auto &cell) {
return cell.get() == grid.getCellRef(0, 0);
}) != cells.end());
REQUIRE(std::find_if(cells.begin(), cells.end(), [&grid](const auto &cell) {
return cell.get() == grid.getCellRef(2, 2);
}) != cells.end());
}
SECTION("contains returns true if cell is in distances", "[distances]") {
auto distances = Distances(grid.getCellRef(0, 0));
distances.setDistance(grid.getCellRef(2, 2), 2);
REQUIRE(distances.contains(grid.getCellRef(2, 2)));
}
}