Untitled
unknown
c_cpp
3 years ago
5.8 kB
12
Indexable
/////////////////////////////////////////////////////////////////////////////////////////////
// Test Cases //
/////////////////////////////////////////////////////////////////////////////////////////////
TEST_CASE("Board initialization", "[board_init]") {
// SECTION("Can use sections") {}
// clang-format off
DiskType solution[kBoardHeight][kBoardWidth] = {
{DiskType::kEmpty, DiskType::kEmpty, DiskType::kEmpty, DiskType::kEmpty, DiskType::kEmpty, DiskType::kEmpty, DiskType::kEmpty},
{DiskType::kEmpty, DiskType::kEmpty, DiskType::kEmpty, DiskType::kEmpty, DiskType::kEmpty, DiskType::kEmpty, DiskType::kEmpty},
{DiskType::kEmpty, DiskType::kEmpty, DiskType::kEmpty, DiskType::kEmpty, DiskType::kEmpty, DiskType::kEmpty, DiskType::kEmpty},
{DiskType::kEmpty, DiskType::kEmpty, DiskType::kEmpty, DiskType::kEmpty, DiskType::kEmpty, DiskType::kEmpty, DiskType::kEmpty},
{DiskType::kEmpty, DiskType::kEmpty, DiskType::kEmpty, DiskType::kEmpty, DiskType::kEmpty, DiskType::kEmpty, DiskType::kEmpty},
{DiskType::kEmpty, DiskType::kEmpty, DiskType::kEmpty, DiskType::kEmpty, DiskType::kEmpty, DiskType::kEmpty, DiskType::kEmpty}
};
// clang-format on
Board student; // NOLINT
InitBoard(student);
REQUIRE(AreEqual(solution, student.board));
}
TEST_CASE("Drop Disk", "[drop_disk]") {
// SECTION("Can use sections") {}
// clang-format off
// clang-format on
Board student; // NOLINT
InitBoard(student);
REQUIRE_THROWS_AS(DropDiskToBoard(student, DiskType::kEmpty, -1),
std::runtime_error);
DropDiskToBoard(student, DiskType::kPlayer1, 0);
DropDiskToBoard(student, DiskType::kPlayer1, 0);
DropDiskToBoard(student, DiskType::kPlayer1, 0);
DropDiskToBoard(student, DiskType::kPlayer1, 0);
DropDiskToBoard(student, DiskType::kPlayer1, 0);
DropDiskToBoard(student, DiskType::kPlayer1, 0);
REQUIRE_THROWS_AS(DropDiskToBoard(student, DiskType::kPlayer1, 0),
std::runtime_error);
}
TEST_CASE("Search For Winner", "[search_for_winner]") {
Board student;
InitBoard(student);
REQUIRE_FALSE(SearchForWinner(
student, DiskType::kPlayer1, WinningDirection::kHorizontal));
REQUIRE_FALSE(SearchForWinner(
student, DiskType::kPlayer1, WinningDirection::kVertical));
REQUIRE_FALSE(SearchForWinner(
student, DiskType::kPlayer1, WinningDirection::kLeftDiag));
REQUIRE_FALSE(SearchForWinner(
student, DiskType::kPlayer1, WinningDirection::kRightDiag));
REQUIRE_FALSE(SearchForWinner(
student, DiskType::kPlayer2, WinningDirection::kHorizontal));
REQUIRE_FALSE(SearchForWinner(
student, DiskType::kPlayer2, WinningDirection::kVertical));
REQUIRE_FALSE(SearchForWinner(
student, DiskType::kPlayer2, WinningDirection::kLeftDiag));
REQUIRE_FALSE(SearchForWinner(
student, DiskType::kPlayer2, WinningDirection::kRightDiag));
DropDiskToBoard(student, DiskType::kPlayer1, 0);
DropDiskToBoard(student, DiskType::kPlayer2, 0);
DropDiskToBoard(student, DiskType::kPlayer1, 0);
DropDiskToBoard(student, DiskType::kPlayer2, 0);
DropDiskToBoard(student, DiskType::kPlayer2, 1);
DropDiskToBoard(student, DiskType::kPlayer1, 1);
DropDiskToBoard(student, DiskType::kPlayer2, 1);
DropDiskToBoard(student, DiskType::kPlayer1, 1);
DropDiskToBoard(student, DiskType::kPlayer1, 2);
DropDiskToBoard(student, DiskType::kPlayer2, 2);
DropDiskToBoard(student, DiskType::kPlayer1, 2);
DropDiskToBoard(student, DiskType::kPlayer2, 2);
DropDiskToBoard(student, DiskType::kPlayer2, 3);
DropDiskToBoard(student, DiskType::kPlayer1, 3);
DropDiskToBoard(student, DiskType::kPlayer2, 3);
DropDiskToBoard(student, DiskType::kPlayer1, 3);
REQUIRE_FALSE(SearchForWinner(
student, DiskType::kPlayer1, WinningDirection::kHorizontal));
REQUIRE_FALSE(SearchForWinner(
student, DiskType::kPlayer1, WinningDirection::kVertical));
REQUIRE_FALSE(SearchForWinner(
student, DiskType::kPlayer1, WinningDirection::kLeftDiag));
REQUIRE(SearchForWinner(
student, DiskType::kPlayer1, WinningDirection::kRightDiag));
REQUIRE(CheckForWinner(student, DiskType::kPlayer1));
REQUIRE_FALSE(SearchForWinner(
student, DiskType::kPlayer2, WinningDirection::kHorizontal));
REQUIRE_FALSE(SearchForWinner(
student, DiskType::kPlayer2, WinningDirection::kVertical));
REQUIRE(SearchForWinner(
student, DiskType::kPlayer2, WinningDirection::kLeftDiag));
REQUIRE_FALSE(SearchForWinner(
student, DiskType::kPlayer2, WinningDirection::kRightDiag));
REQUIRE(CheckForWinner(student, DiskType::kPlayer2));
// Board student2;
// InitBoard(student2);
// DropDiskToBoard(student, DiskType::kPlayer2, 3);
// REQUIRE(SearchForWinner())
}
TEST_CASE("Board Location In Bounds", "[board_location_in_bounds]") {
REQUIRE_FALSE(BoardLocationInBounds(-1, 9));
REQUIRE(BoardLocationInBounds(2, 2));
}
TEST_CASE("Check For Winner", "[check_for_winner]") {
Board student;
InitBoard(student);
REQUIRE_FALSE(CheckForWinner(student, DiskType::kPlayer1));
REQUIRE_FALSE(CheckForWinner(student, DiskType::kPlayer2));
DropDiskToBoard(student, DiskType::kPlayer1, 0);
DropDiskToBoard(student, DiskType::kPlayer1, 0);
DropDiskToBoard(student, DiskType::kPlayer1, 0);
DropDiskToBoard(student, DiskType::kPlayer1, 0);
DropDiskToBoard(student, DiskType::kPlayer2, 1);
DropDiskToBoard(student, DiskType::kPlayer2, 1);
DropDiskToBoard(student, DiskType::kPlayer2, 1);
DropDiskToBoard(student, DiskType::kPlayer2, 1);
REQUIRE(CheckForWinner(student, DiskType::kPlayer1));
REQUIRE(CheckForWinner(student, DiskType::kPlayer2));
}
/////////////////////////////////////////////////////////////////////////////////////////////Editor is loading...