summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/chessarbiter.cpp46
1 files changed, 37 insertions, 9 deletions
diff --git a/tests/chessarbiter.cpp b/tests/chessarbiter.cpp
index 48e58fa..c5206d7 100644
--- a/tests/chessarbiter.cpp
+++ b/tests/chessarbiter.cpp
@@ -180,43 +180,43 @@ TEST_CASE("ListLegalMoves", "[chessarbiter/ListLegalMoves]") {
a.Setup("rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQK11R w KQkq - 0 1");
moves = a.ListLegalMoves(false);
REQUIRE(moves.size() == 22);
- CHECK(std::find(moves.begin(), moves.end(), "O-O") != moves.end());
+ CHECK(std::find(moves.begin(), moves.end(), "e1g1") != moves.end());
// White Short Castle impossible
a.Setup("rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQK11R w Qkq - 0 1");
moves = a.ListLegalMoves(false);
- CHECK_FALSE(std::find(moves.begin(), moves.end(), "O-O") != moves.end());
+ CHECK_FALSE(std::find(moves.begin(), moves.end(), "e1g1") != moves.end());
// White Short Castle impossible 2
a.Setup("rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQK1NR w KQkq - 0 1");
moves = a.ListLegalMoves(false);
- CHECK_FALSE(std::find(moves.begin(), moves.end(), "O-O") != moves.end());
+ CHECK_FALSE(std::find(moves.begin(), moves.end(), "e1g1") != moves.end());
// White Short Castle impossible 3 (queen attacks by black)
a.Setup("rnbqkbnr/pppppqpp/8/8/8/8/PPPPP1PP/RNBQK11R w KQkq - 0 1");
moves = a.ListLegalMoves(false);
- CHECK_FALSE(std::find(moves.begin(), moves.end(), "O-O") != moves.end());
+ CHECK_FALSE(std::find(moves.begin(), moves.end(), "e1g1") != moves.end());
// White Long Castle possible
a.Setup("rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/R3KNBR w KQkq - 0 1");
moves = a.ListLegalMoves(false);
REQUIRE(moves.size() == 23);
- CHECK(find(moves.begin(), moves.end(), "O-O-O") != moves.end());
+ CHECK(find(moves.begin(), moves.end(), "e1c1") != moves.end());
// White Long Castle impossible
a.Setup("rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/R3KBNR w Kkq - 0 1");
moves = a.ListLegalMoves(false);
- CHECK_FALSE(std::find(moves.begin(), moves.end(), "O-O-O") != moves.end());
+ CHECK_FALSE(std::find(moves.begin(), moves.end(), "e1c1") != moves.end());
// White Long Castle impossible 2
a.Setup("rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RN2KBNR w KQkq - 0 1");
moves = a.ListLegalMoves(false);
- CHECK_FALSE(std::find(moves.begin(), moves.end(), "O-O-O") != moves.end());
+ CHECK_FALSE(std::find(moves.begin(), moves.end(), "e1c1") != moves.end());
// White Long Castle impossible 3 (rook attacks by black)
a.Setup("rnbqkbnr/pprppppp/8/8/8/8/PP1PPPPP/R3KBNR w KQkq - 0 1");
moves = a.ListLegalMoves(false);
- CHECK_FALSE(std::find(moves.begin(), moves.end(), "O-O-O") != moves.end());
+ CHECK_FALSE(std::find(moves.begin(), moves.end(), "e1c1") != moves.end());
}
TEST_CASE("IsPlayable", "[chessarbiter/IsPlayable]") {
@@ -367,5 +367,33 @@ TEST_CASE("SimpleCapture", "[SimplePieceCapture]") {
a.Play("e4d5");
CHECK(a.GetFEN() ==
"rnbqkbnr/ppp1pppp/8/3P4/8/8/PPPP1PPP/RNBQKBNR b KQkq - 0 2");
- CHECK(a.GetCapture()=='p');
+ CHECK(a.GetCapture() == 'p');
+}
+
+TEST_CASE("SimpleCastle", "[SimpleCastle]") {
+ ChessArbiter a;
+ a.Setup("rnbqkbnr/ppp1p1pp/8/3p1p2/4P3/3B1N2/PPPP1PPP/RNBQK2R w KQkq - 0 2");
+
+ // White
+ CHECK(a.Play("e1g1"));
+ CHECK(a.GetFEN() ==
+ "rnbqkbnr/ppp1p1pp/8/3p1p2/4P3/3B1N2/PPPP1PPP/RNBQ1RK1 b kq - 1 2");
+
+ a.Setup("rnbqkbnr/ppp1p1pp/8/3p1p2/4P3/1BNB1N2/PPPPQPPP/R3K2R w KQkq - 0 2");
+ CHECK(a.Play("e1c1"));
+ CHECK(a.GetFEN() ==
+ "rnbqkbnr/ppp1p1pp/8/3p1p2/4P3/1BNB1N2/PPPPQPPP/2KR3R b kq - 1 2");
+
+ // Black
+ a.Setup(
+ "r3k2r/pppnp1pp/1bq1bn2/3p1p2/4P3/1BNB1N2/PPPPQPPP/R3K2R b KQkq - 0 2");
+ CHECK(a.Play("e8g8"));
+ CHECK(a.GetFEN() ==
+ "r4rk1/pppnp1pp/1bq1bn2/3p1p2/4P3/1BNB1N2/PPPPQPPP/R3K2R w KQ - 1 3");
+
+ a.Setup(
+ "r3k2r/pppnp1pp/1bq1bn2/3p1p2/4P3/1BNB1N2/PPPPQPPP/R3K2R b KQkq - 0 2");
+ CHECK(a.Play("e8c8"));
+ CHECK(a.GetFEN() ==
+ "2kr3r/pppnp1pp/1bq1bn2/3p1p2/4P3/1BNB1N2/PPPPQPPP/R3K2R w KQ - 1 3");
}