From 3915544a6b67735e29be3ddd8c3e76f3d8d0b775 Mon Sep 17 00:00:00 2001 From: Fabian Fichter Date: Mon, 29 Mar 2021 19:56:27 +0200 Subject: [PATCH] Improve test coverage Add further tests to cover more variant configuration features. Closes #279. No functional change. --- test.py | 30 +++++++++++++++++++++++++++--- tests/perft.sh | 1 + 2 files changed, 28 insertions(+), 3 deletions(-) diff --git a/test.py b/test.py index adb43ca..33c15e9 100644 --- a/test.py +++ b/test.py @@ -124,7 +124,7 @@ variant_positions = { class TestPyffish(unittest.TestCase): def test_version(self): result = sf.version() - self.assertEqual(result, (0, 0, 55)) + self.assertEqual(len(result), 3) def test_info(self): result = sf.info() @@ -474,7 +474,31 @@ class TestPyffish(unittest.TestCase): def test_game_result(self): result = sf.game_result("chess", CHESS, ["f2f3", "e7e5", "g2g4", "d8h4"]) - self.assertTrue(result < 0) + self.assertEqual(result, -sf.VALUE_MATE) + + # shogi pawn drop mate + result = sf.game_result("shogi", "lnsg3nk/1r2b1gs1/ppppppp1p/7N1/7p1/9/PPPPPPPP1/1B5R1/LNSGKGS1L[P] w 0 1", ["P@i8"]) + self.assertEqual(result, sf.VALUE_MATE) + + # losers checkmate + result = sf.game_result("losers", CHESS, ["f2f3", "e7e5", "g2g4", "d8h4"]) + self.assertEqual(result, sf.VALUE_MATE) + + # suicide stalemate + result = sf.game_result("suicide", "8/8/8/7p/7P/8/8/8 w - - 0 1", []) + self.assertEqual(result, sf.VALUE_DRAW) + result = sf.game_result("suicide", "8/8/8/7p/7P/7P/8/8 w - - 0 1", []) + self.assertEqual(result, -sf.VALUE_MATE) + result = sf.game_result("suicide", "8/8/8/7p/7P/8/8/n7 w - - 0 1", []) + self.assertEqual(result, sf.VALUE_MATE) + + # atomic check- and stalemate + # checkmate + result = sf.game_result("atomic", "BQ6/Rk6/8/8/8/8/8/4K3 b - - 0 1", []) + self.assertEqual(result, -sf.VALUE_MATE) + # stalemate + result = sf.game_result("atomic", "KQ6/Rk6/2B5/8/8/8/8/8 b - - 0 1", []) + self.assertEqual(result, sf.VALUE_DRAW) def test_is_immediate_game_end(self): result = sf.is_immediate_game_end("capablanca", CAPA, []) @@ -488,7 +512,7 @@ class TestPyffish(unittest.TestCase): moves = "e2e3 e9f9 h3d3 e7f7 i1i3 h10i8 i3h3 c10e7 h3h8 i10i9 h8b8 i9g9 d3f3 f9e9 f3f10 e7c10 f10c10 b10c8 c10g10 g9f9 b8c8 a10b10 b3f3 f9h9 a1a2 h9f9 a2d2 b10b9 d2d10 e9d10 c8c10 d10d9 f3f9 i8g9 f9b9 a7a6 g10g7 f7f6 e4e5 c7d7 g1e4 i7i6 e4b6 d9d8 c10c8 d8d9 b9g9 d7d6 b6e8 i6h6 e5e6 f6e6 c1e4 a6b6 e4b6 d6d5 c4c5 d9d10 e3d3 h6i6 c5c6 d5c5 d3d3" result = sf.is_immediate_game_end("janggi", JANGGI, moves.split()) self.assertTrue(result[0]) - self.assertTrue(result[1] < 0) + self.assertEqual(result[1], -sf.VALUE_MATE) def test_is_optional_game_end(self): result = sf.is_optional_game_end("capablanca", CAPA, []) diff --git a/tests/perft.sh b/tests/perft.sh index 200e229..252b521 100755 --- a/tests/perft.sh +++ b/tests/perft.sh @@ -97,6 +97,7 @@ if [[ $1 == "" || $1 == "variant" ]]; then expect perft.exp placement startpos 3 50560 > /dev/null expect perft.exp placement "fen rnbq1bnr/pppppppp/8/8/8/8/PPPPPPPP/QR1BKNN1[BRk] w - - 0 1" 6 17804 > /dev/null expect perft.exp placement "fen 1n1r1q2/pppppppp/8/8/8/8/PPPPPPPP/1N1B1R1N[KQRBkrbbn] b - - 0 4" 5 145152 > /dev/null + expect perft.exp placement "fen r3k3/pppppppp/8/8/8/8/PPPPPPPP/R6R[Kr] w q - 0 1" 4 18492 > /dev/null expect perft.exp seirawan startpos 4 782599 > /dev/null expect perft.exp seirawan "fen reb1k2r/ppppqppp/2nb1n2/4p3/4P3/N1P2N2/PB1PQPPP/RE2KBHR[h] b KQkqc - 3 7" 4 890467 > /dev/null expect perft.exp euroshogi startpos 4 380499 > /dev/null -- 1.7.0.4