def test_pawn_white_simple(self): """Tests that a simple forward move is in the pawn's move list.""" board, white = Board(), Player(Color.W) pawn_white = Pawn(white, [3, 4]) # d4 pawn_white.first_move = False board.add_to_board(pawn_white) correct_move = [3, 3] # d5 returned_moves = pawn_white.get_legal_moves(board, True) self.assertTrue(len(returned_moves) == 1) self.assertTrue(correct_move in returned_moves)
def test_pawn_black_simple(self): """Tests that a simple forward move is in the pawn's move list.""" board, black = Board(), Player(Color.B) pawn_black = Pawn(black, [3, 4]) # d4 pawn_black.first_move = False board.add_to_board(pawn_black) correct_move = [3, 5] # d3 returned_moves = pawn_black.get_legal_moves(board, True) self.assertTrue(len(returned_moves) == 1) self.assertTrue(correct_move in returned_moves)
def test_pawn_black_en_passant(self): """Tests that en passant opportunities are returned correctly.""" board, white, black = create_board_and_players() pawn_black = Pawn(black, [3, 4]) # d4 pawn_black.first_move = False board.add_to_board(pawn_black) pawn_white = Pawn(white, [2, 6]) # c2 board.add_to_board(pawn_white) # simulate a move to c4, creating en passant opportunity. board.make_move(pawn_white, [2, 4]) correct_move1 = [3, 5] # d3 correct_move2 = [2, 5] # c3, en passant capture returned_moves = pawn_black.get_legal_moves(board, True) self.assertTrue(len(returned_moves) == 2) self.assertTrue(correct_move1 in returned_moves) self.assertTrue(correct_move2 in returned_moves)
def test_pawn_black_capture(self): """Tests that pawn capture moves are returned correctly.""" board, white, black = create_board_and_players() pawn_black = Pawn(black, [3, 4]) # d4 pawn_black.first_move = False board.add_to_board(pawn_black) pawn_white1 = Pawn(white, [2, 5]) # c3 board.add_to_board(pawn_white1) pawn_white2 = Pawn(white, [4, 5]) # e3 board.add_to_board(pawn_white2) correct_move1 = [3, 5] # d3 correct_move2 = [2, 5] # c3 correct_move3 = [4, 5] # e3 returned_moves = pawn_black.get_legal_moves(board, True) self.assertTrue(len(returned_moves) == 3) self.assertTrue(correct_move1 in returned_moves) self.assertTrue(correct_move2 in returned_moves) self.assertTrue(correct_move3 in returned_moves)
def test_filter_checks(self): """Assure that all moves that lead to check for the player are appropriately filtered out of the move list.""" board, white, black = create_board_and_players() pawn_pos_white = [5, 3] # f5 pawn_white = Pawn(white, pawn_pos_white) pawn_white.first_move = False board.add_to_board(pawn_white) king_pos_white = [7, 3] # h5 king_white = King(white, king_pos_white) board.add_to_board(king_white) pawn_moves = pawn_white.get_legal_moves(board, False) filtered_pawn_moves = pawn_white.filter_checks(pawn_moves, board) self.assertEqual(pawn_moves, filtered_pawn_moves) rook_pos_black = [1, 3] # a1 rook_black = Rook(black, rook_pos_black) board.add_to_board(rook_black) pawn_moves = pawn_white.get_legal_moves(board, False) filtered_pawn_moves = pawn_white.filter_checks(pawn_moves, board) self.assertEqual(len(filtered_pawn_moves), 0)