41 lines
1.7 KiB
C++
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)));
|
|
}
|
|
} |