class TestKingInCheck(unittest.TestCase): def setUp(self): self.board = Board() self.board.put("white king", "a3") self.board.put("black king", "h6") self.board.free_square("e1") self.board.free_square("e8") def test_kingInCheck_ifMovedIntoCheck(self): self.board.put("white rook", "a5") self.board.put("black rook", "h4") self.assertTrue( self.board.king_in_check_after_move("a3", "a4", "white")) self.assertTrue( self.board.king_in_check_after_move("h6", "h5", "black")) def test_moveIllegal_ifKingInCheck_afterMove(self): self.board.put("white rook", "a5") self.board.put("black rook", "h4") self.assertFalse(self.board.move_is_legal("a3", "a4", "white")) self.assertFalse(self.board.move_is_legal("h6", "h5", "black")) def test_getAllReachableToSquaresFromSquareX(self): self.assertSetEqual({"e3", "e4"}, self.board.get_legal_to_squares("e2")) self.assertSetEqual({"e5", "e6"}, self.board.get_legal_to_squares("e7")) self.assertSetEqual(set(), self.board.get_legal_to_squares("c1")) def test_getAllReachableToSquaresForBlockedPawn(self): self.board.put("black pawn", "a4") self.assertSetEqual(set(), self.board.get_legal_to_squares("a4")) def test_kingInCheck_ifAttacked(self): self.board.put("black rook", "h3") self.assertTrue(self.board.king_in_check("white")) self.assertFalse(self.board.king_in_check("black")) def test_kingNotInCheck_ifInFrontOfPawn(self): self.board.put("black pawn", "a4") self.assertFalse(self.board.king_in_check("white")) def test_kingNotInCheck_ifTwoStepsFromPawnOnInitialSquare(self): self.board.move("a3", "e5") self.assertFalse(self.board.king_in_check("white"))
from src.Chess2 import Board board = Board() color_to_move = "white" def switch_turn(color): if color == "white": return "black" else: return "white" print(board.display()) while not board.game_ended: move = input("Enter move in the form <from_square>,<to_square>:") from_square = move.split(",")[0] to_square = move.split(",")[1] if board.move_is_legal(from_square, to_square, color_to_move): board.move_if_legal(from_square, to_square, color_to_move) color_to_move = switch_turn(color_to_move) print("") print(board.display()) else: print("illegal move!") else: print(board.result)
class TestCastlingMove(unittest.TestCase): def setUp(self): self.board = Board() def test_castlingKingsideFieldIsReachable(self): self.board.free_square("f1") self.board.free_square("g1") self.assertTrue(self.board.is_reachable("e1", "g1", "white")) self.board.free_square("f8") self.board.free_square("g8") self.assertTrue(self.board.is_reachable("e8", "g8", "black")) def test_castlingKingsideIsLegal(self): self.board.free_square("f1") self.board.free_square("g1") self.assertTrue(self.board.move_is_legal("e1", "g1", "white")) self.board.free_square("f8") self.board.free_square("g8") self.assertTrue(self.board.move_is_legal("e8", "g8", "black")) def test_castlingKingsideFieldIsNotReachable_ifPathNotClear(self): self.assertFalse(self.board.is_reachable("e1", "g1", "white")) self.assertFalse(self.board.move_is_legal("e8", "g8", "black")) def test_castlingQueensideFieldIsReachable(self): self.board.free_square("d1") self.board.free_square("c1") self.board.free_square("b1") self.assertTrue(self.board.is_reachable("e1", "c1", "white")) self.board.free_square("d8") self.board.free_square("c8") self.board.free_square("b8") self.assertTrue(self.board.is_reachable("e8", "c8", "black")) def test_castlingQueensideIsLegal(self): self.board.free_square("d1") self.board.free_square("c1") self.board.free_square("b1") self.assertTrue(self.board.move_is_legal("e1", "c1", "white")) self.board.free_square("d8") self.board.free_square("c8") self.board.free_square("b8") self.assertTrue(self.board.move_is_legal("e8", "c8", "black")) def test_castlingQueensideFieldIsNotReachable_ifPathNotClear(self): self.assertFalse(self.board.is_reachable("e1", "c1", "white")) self.assertFalse(self.board.move_is_legal("e8", "c8", "black")) def test_piecesOnTargetSquares_afterWhiteCastlingKingside(self): self.board.free_square("f1") self.board.free_square("g1") self.board.move_if_legal("e1", "g1", "white") self.assertEqual("white king", self.board.g1) self.assertEqual("white rook", self.board.f1) def test_piecesOnTargetSquares_afterBlackCastlingKingside(self): self.board.free_square("f8") self.board.free_square("g8") self.board.move_if_legal("e8", "g8", "black") self.assertEqual("black king", self.board.g8) self.assertEqual("black rook", self.board.f8) def test_piecesOnTargetSquares_afterWhiteCastlingQueenside(self): self.board.free_square("d1") self.board.free_square("c1") self.board.free_square("cb") self.board.move_if_legal("e1", "c1", "white") self.assertEqual("white king", self.board.c1) self.assertEqual("white rook", self.board.d1) def test_piecesOnTargetSquares_afterBlackCastlingQueenside(self): self.board.free_square("d8") self.board.free_square("c8") self.board.free_square("b8") self.board.move_if_legal("e8", "c8", "black") self.assertEqual("black king", self.board.c8) self.assertEqual("black rook", self.board.d8)