summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorLoic Guegan <manzerbredes@mailbox.org>2022-02-19 18:23:06 +0100
committerLoic Guegan <manzerbredes@mailbox.org>2022-02-19 18:23:06 +0100
commit5e78a4172da975ac227779456e670492217de206 (patch)
tree8f71add7ce8323b83b2810e6484a89c462835a00 /tests
parentf60b684790ae7a726763e4c6f9122371c71d17e9 (diff)
Now SAN moves can be parsed
Diffstat (limited to 'tests')
-rw-r--r--tests/chessarbiter.cpp33
1 files changed, 33 insertions, 0 deletions
diff --git a/tests/chessarbiter.cpp b/tests/chessarbiter.cpp
index 9c1407d..8687d4e 100644
--- a/tests/chessarbiter.cpp
+++ b/tests/chessarbiter.cpp
@@ -413,3 +413,36 @@ TEST_CASE("SimpleEnPassant", "[SimpleEnPassant]") {
CHECK(a.GetFEN() ==
"rnbqkbnr/ppppp1pp/8/8/8/4p3/PPPP1PPP/RNBQKBNR w KQkq - 0 2");
}
+
+TEST_CASE("ParseSAN", "[ParseSAN]") {
+ ChessArbiter a;
+
+ // Initial position test
+ a.Setup("rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1");
+ CHECK(a.ParseSAN("d4") == "d2d4");
+ CHECK(a.ParseSAN("e3") == "e2e3");
+ CHECK(a.ParseSAN("e4") == "e2e4");
+ CHECK(a.ParseSAN("Nc3") == "b1c3");
+ CHECK(a.ParseSAN("Nf3") == "g1f3");
+
+ // Check when two similar piece can go to the same square
+ a.Setup("rnbqkbnr/pppppppp/8/8/P6P/7R/1PPPPPP1/RNBQKBN1 w Qkq - 0 1");
+ CHECK(a.ParseSAN("Raa3") == "a1a3");
+ CHECK(a.ParseSAN("Rha3") == "h3a3");
+ a.Setup("rnbqkbnr/pppppppp/8/8/P6P/R7/1PPPPPP1/RNBQKBN1 w Qkq - 0 1");
+ CHECK(a.ParseSAN("R1a2") == "a1a2");
+ CHECK(a.ParseSAN("R3a2") == "a3a2");
+ a.Setup("r1bqkb1r/pppppppp/5n2/8/P6P/R1N5/1PPPPnP1/R1BQKBN1 b Qkq - 0 1");
+ CHECK(a.ParseSAN("N6e4") == "f6e4");
+ CHECK(a.ParseSAN("N2e4") == "f2e4");
+
+ // Castling
+ a.Setup("rnbqkbnr/pppppppp/8/8/8/4NB2/PPPPPPPP/RNBQK2R w KQkq - 0 1");
+ CHECK(a.ParseSAN("O-O") == "e1g1");
+ a.Setup("rnbqkbnr/pppppppp/8/8/8/2NBQ3/PPPPPPPP/R3KBNR w KQkq - 0 1");
+ CHECK(a.ParseSAN("O-O-O") == "e1c1");
+ a.Setup("rnbqk2r/pppppppp/4bn2/8/8/2NBQ3/PPPPPPPP/R3KBNR b KQkq - 0 1");
+ CHECK(a.ParseSAN("O-O") == "e8g8");
+ a.Setup("r3kb1r/pppppppp/2qnbn2/8/8/2NBQ3/PPPPPPPP/R3KBNR b KQkq - 0 1");
+ CHECK(a.ParseSAN("O-O-O") == "e8c8");
+}