class TestPawn(unittest.TestCase):

    def setUp(self):
        self.coords = Coordinates('d', 4)
        self.bishop = Bishop(self.coords, 'white')

    def test_bishop_initialization(self):
        self.assertEqual(self.bishop.coordinates, self.coords)

    def test_bishop_position(self):
        self.assertTupleEqual((3, 3), self.bishop.position)

    def test_bishop_resource_name(self):
        self.assertEqual('white_bishop.png', self.bishop.resource_name)

    def test_bishop_cant_move_ahead(self):
        new_coord = Coordinates('d', 5)
        self.assertFalse(self.bishop.can_move_to(new_coord))

    def test_bishop_cant_move_behind(self):
        new_coord = Coordinates('d', 3)
        self.assertFalse(self.bishop.can_move_to(new_coord))

    def test_bishop_cant_move_to_the_left(self):
        new_coord = Coordinates('c', 4)
        self.assertFalse(self.bishop.can_move_to(new_coord))

    def test_bishop_cant_move_to_the_right(self):
        new_coord = Coordinates('e', 4)
        self.assertFalse(self.bishop.can_move_to(new_coord))

    def test_bishop_can_move_diagonally(self):
        new_coord = Coordinates('e', 5)
        self.assertTrue(self.bishop.can_move_to(new_coord))
Exemple #2
0
def create():
    b = [[
        Rook("black"),
        Knight("black"),
        Bishop("black"),
        Queen("black"),
        King("black"),
        Bishop("black"),
        Knight("black"),
        Rook("black")
    ],
         [
             Pawn("black"),
             Pawn("black"),
             Pawn("black"),
             Pawn("black"),
             Pawn("black"),
             Pawn("black"),
             Pawn("black"),
             Pawn("black")
         ]]

    for i in range(2, 6):
        b.append([
            BlankPiece(),
            BlankPiece(),
            BlankPiece(),
            BlankPiece(),
            BlankPiece(),
            BlankPiece(),
            BlankPiece(),
            BlankPiece()
        ])

    b.append([
        Pawn("white"),
        Pawn("white"),
        Pawn("white"),
        Pawn("white"),
        Pawn("white"),
        Pawn("white"),
        Pawn("white"),
        Pawn("white")
    ])
    b.append([
        Rook("white"),
        Knight("white"),
        Bishop("white"),
        Queen("white"),
        King("white"),
        Bishop("white"),
        Knight("white"),
        Rook("white")
    ])
    return b
Exemple #3
0
 def back_row(self, color):
     return [
         Tower(color, self),
         Horse(color, self),
         Bishop(color, self),
         King(color, self),
         Queen(color, self),
         Bishop(color, self),
         Horse(color, self),
         Tower(color, self),
     ]
def test_blackburne_s_mate():
    """"""
    game = Game([
        [Empty() for _ in range(5)] +
        [Tower('black'), King('black'), Empty()],
        [Empty() for _ in range(7)] + [Bishop('white')],
        [Empty() for _ in range(8)],
        [Empty() for _ in range(6)] + [Horse('white'), Empty()],
        [Empty() for _ in range(8)],
        [Empty() for _ in range(8)],
        [Empty(), Bishop('white')] + [Empty() for _ in range(6)],
        [Empty() for _ in range(8)],
    ])
    assert game.is_check('black'), print(game)
    assert game.is_checkmate('black'), print(game)
Exemple #5
0
 def promotioned(self, piece, l):
     position = None
     if piece.getcolor() == "White":
         info = self.table.getwhitepieces()
     else:
         info = self.table.getblackpieces()
     for i in range(0, len(info)):
         if info[i].getid() == piece.getid():
             position = i
             break
     if l == "Bishop":
         k = info[position] = Bishop.Bishop(piece.getid(), piece.getcolor(),
                                            piece.getx(), piece.gety())
         self.table.updatepiece(info[position], info[position].getx(),
                                info[position].gety())
     elif l == "Rook":
         k = info[position] = Rook.Rook(piece.getid(), piece.getcolor(),
                                        piece.getx(), piece.gety())
         self.table.updatepiece(info[position], info[position].getx(),
                                info[position].gety())
     elif l == "Queen":
         k = info[position] = Queen.Queen(piece.getid(), piece.getcolor(),
                                          piece.getx(), piece.gety())
         self.table.updatepiece(info[position], info[position].getx(),
                                info[position].gety())
     elif l == "Knight":
         k = info[position] = Knight.Knight(piece.getid(), piece.getcolor(),
                                            piece.getx(), piece.gety())
         self.table.updatepiece(info[position], info[position].getx(),
                                info[position].gety())
     else:
         return None
     return k
Exemple #6
0
def test_white_pawn_promotion():
    __ = BlankPiece()

    p1 = Pawn("white")
    p2 = Pawn("white")

    # Enemy rook
    rr = Rook("black")

    #             0   1   2   3   4   5   6   7
    board = [
        [__, __, __, __, __, rr, __, __],  # 0
        [__, __, p1, __, __, p2, __, __],  # 1
        [__, __, __, __, __, __, __, __],  # 2
        [__, __, __, __, __, __, __, __],  # 3
        [__, __, __, __, __, __, __, __],  # 4
        [__, __, __, __, __, __, __, __],  # 5
        [__, __, __, __, __, __, __, __],  # 6
        [__, __, __, __, __, __, __, __]  # 7
    ]
    # Left-most pawn
    assert_length(board[1][2].get_attack_set(board, [1, 2], []), 0)
    assert_contains(board[1][2].get_move_set(board, [1, 2], []), [
        Move.pawn_promotion([1, 2], [0, 2], Queen("white")),
        Move.pawn_promotion([1, 2], [0, 2], Bishop("white")),
        Move.pawn_promotion([1, 2], [0, 2], Knight("white")),
        Move.pawn_promotion([1, 2], [0, 2], Rook("white"))
    ])
    assert_length(board[1][5].get_attack_set(board, [1, 5], []), 0)
    assert_length(board[1][5].get_move_set(board, [1, 5], []), 0)
def test_bodens_mate():
    """"""
    game = Game([
        [Empty(), Empty()] + [King('black'), Tower('black')] +
        [Empty() for _ in range(4)],
        [Empty()
         for _ in range(3)] + [Pawn('black')] + [Empty() for _ in range(4)],
        [Bishop('white')] + [Empty() for _ in range(7)],
        [Empty() for _ in range(8)],
        [Empty() for _ in range(5)] +
        [Bishop('white'), Empty(), Empty()],
        [Empty() for _ in range(8)],
        [Empty() for _ in range(8)],
        [Empty() for _ in range(8)],
    ])
    assert game.is_check('black'), print(game)
    assert game.is_checkmate('black'), print(game)
Exemple #8
0
    def __init__(self, initial_pieces=None):
        self.check = None
        self.__turn = 'white'
        self.__squares = {}
        self.__initial_pieces = initial_pieces or {
            'a1': Rook('white'),
            'b1': Knight('white'),
            'c1': Bishop('white'),
            'd1': Queen('white'),
            'e1': King('white'),
            'f1': Bishop('white'),
            'g1': Knight('white'),
            'h1': Rook('white'),
            'a2': Pawn('white'),
            'b2': Pawn('white'),
            'c2': Pawn('white'),
            'd2': Pawn('white'),
            'e2': Pawn('white'),
            'f2': Pawn('white'),
            'g2': Pawn('white'),
            'h2': Pawn('white'),

            'a8': Rook('black'),
            'b8': Knight('black'),
            'c8': Bishop('black'),
            'd8': Queen('black'),
            'e8': King('black'),
            'f8': Bishop('black'),
            'g8': Knight('black'),
            'h8': Rook('black'),
            'a7': Pawn('black'),
            'b7': Pawn('black'),
            'c7': Pawn('black'),
            'd7': Pawn('black'),
            'e7': Pawn('black'),
            'f7': Pawn('black'),
            'g7': Pawn('black'),
            'h7': Pawn('black'),
        }

        for _x in x:
            for _y in y:
                self.__squares[_x + _y] = None
                if _x + _y in self.__initial_pieces:
                    self.__squares[_x + _y] = self.__initial_pieces[_x + _y]
Exemple #9
0
    def __init__(self):
        self.classic = ([
            Rook.Rook(0, "White", 0, 0),
            Knight.Knight(1, "White", 1, 0),
            Bishop.Bishop(2, "White", 2, 0),
            Queen.Queen(3, "White", 3, 0),
            King.King(4, "White", 4, 0),
            Bishop.Bishop(5, "White", 5, 0),
            Knight.Knight(6, "White", 6, 0),
            Rook.Rook(7, "White", 7, 0),
            Pawn.Pawn(8, "White", 0, 1),
            Pawn.Pawn(9, "White", 1, 1),
            Pawn.Pawn(10, "White", 2, 1),
            Pawn.Pawn(11, "White", 3, 1),
            Pawn.Pawn(12, "White", 4, 1),
            Pawn.Pawn(13, "White", 5, 1),
            Pawn.Pawn(14, "White", 6, 1),
            Pawn.Pawn(15, "White", 7, 1)
        ], [
            Pawn.Pawn(16, "Black", 0, 6),
            Pawn.Pawn(17, "Black", 1, 6),
            Pawn.Pawn(18, "Black", 2, 6),
            Pawn.Pawn(19, "Black", 3, 6),
            Pawn.Pawn(20, "Black", 4, 6),
            Pawn.Pawn(21, "Black", 5, 6),
            Pawn.Pawn(22, "Black", 6, 6),
            Pawn.Pawn(23, "Black", 7, 6),
            Rook.Rook(24, "Black", 0, 7),
            Knight.Knight(25, "Black", 1, 7),
            Bishop.Bishop(26, "Black", 2, 7),
            King.King(27, "Black", 4, 7),
            Queen.Queen(28, "Black", 3, 7),
            Bishop.Bishop(29, "Black", 5, 7),
            Knight.Knight(30, "Black", 6, 7),
            Rook.Rook(31, "Black", 7, 7)
        ])

        self.table = Table.Table(self.classic[0], self.classic[1])
        self.shift = "White"
        self.player1 = ("Player 1", "White")
        self.player2 = ("Player 2", "Black")
        self.winner = None
        self.finish = False
Exemple #10
0
def test_serialization():
    __ = BlankPiece()

    wp = Pawn("white")
    bp = Pawn("black")
    br = Rook("black")
    bh = Knight("black")
    bb = Bishop("black")
    bq = Queen("black")
    bk = King("black")

    #             0   1   2   3   4   5   6   7
    board = [
                [br, bh, bb, bq, bk, __, __, __],  # 0
                [bp, __, __, __, __, __, __, __],  # 1
                [__, __, __, __, __, __, __, __],  # 2
                [__, __, __, __, __, __, __, __],  # 3
                [__, __, __, __, __, __, __, __],  # 4
                [__, __, __, __, __, __, __, __],  # 5
                [wp, __, __, __, __, __, __, __],  # 6
                [__, __, __, __, __, __, __, __]   # 7
            ]

    serializable_gameboard = convert_to_string_gameboard(board)

    expected_gameboard = [
        ['br', 'bh', 'bb', 'bq', 'bk', '_', '_', '_'],
        ['bp', '_', '_', '_', '_', '_', '_', '_'],
        ['_', '_', '_', '_', '_', '_', '_', '_'],
        ['_', '_', '_', '_', '_', '_', '_', '_'],
        ['_', '_', '_', '_', '_', '_', '_', '_'],
        ['_', '_', '_', '_', '_', '_', '_', '_'],
        ['wp', '_', '_', '_', '_', '_', '_', '_'],
        ['_', '_', '_', '_', '_', '_', '_', '_']
    ]

    assert_length(serializable_gameboard, 8)
    assert_length(serializable_gameboard[3], 8)
    if expected_gameboard != serializable_gameboard:
        raise AssertionError("Expected gameboard" + str(expected_gameboard) + " but was " + str(serializable_gameboard))

    new_board = convert_from_string_gameboard(expected_gameboard)
    for i in range(0, len(board)):
        for j in range(0, len(board[0])):
            expected_piece = board[i][j]
            actual_piece = new_board[i][j]
            if expected_piece.type != actual_piece.type:
                raise AssertionError("Expected piece type at " + str(i) + ", " + str(j) + " was " + expected_piece.type
                                     + ", but got " + actual_piece.type)
            if expected_piece.col != actual_piece.col:
                raise AssertionError("Expected piece col at " + str(i) + ", " + str(
                    j) + " was " + expected_piece.col + " but got " + actual_piece.col)
Exemple #11
0
def test_bishop():
    piece = Bishop(Color.BLACK, Position(x=3, y=3))
    assert piece.can_move_to(Position(x=2, y=2))
    assert piece.can_move_to(Position(x=4, y=4))
    assert piece.can_move_to(Position(x=2, y=4))

    # Rook
    assert not piece.can_move_to(Position(x=4, y=3))
    assert not piece.can_move_to(Position(x=3, y=2))

    # Knight
    assert not piece.can_move_to(Position(x=4, y=5))
    assert not piece.can_move_to(Position(x=2, y=5))
    assert not piece.can_move_to(Position(x=4, y=1))
    assert not piece.can_move_to(Position(x=2, y=1))
    assert not piece.can_move_to(Position(x=1, y=2))
    assert not piece.can_move_to(Position(x=1, y=4))
    assert not piece.can_move_to(Position(x=5, y=2))
    assert not piece.can_move_to(Position(x=5, y=4))
def test_bishop_and_knight_mate():
    """"""
    game = Game([
        [Empty() for _ in range(7)] + [King('black')],
        [Empty() for _ in range(8)],
        [Empty() for _ in range(5)] +
        [Bishop('white'), King('white'),
         Horse('white')],
        [Empty() for _ in range(8)],
        [Empty() for _ in range(8)],
        [Empty() for _ in range(8)],
        [Empty() for _ in range(8)],
        [Empty() for _ in range(8)],
    ])
    assert game.is_check('black'), print(game)
    assert game.is_checkmate('black'), print(game)
def test_damiano_s_bishop_mate():
    """"""
    game = Game([
        [Empty() for _ in range(5)] +
        [King('black'), Empty(), Empty()],
        [Empty() for _ in range(5)] +
        [Queen('white'), Empty(), Empty()],
        [Empty()
         for _ in range(6)] + [Bishop('white'), Empty()],
        [Empty() for _ in range(8)],
        [Empty() for _ in range(8)],
        [Empty() for _ in range(8)],
        [Empty() for _ in range(8)],
        [Empty() for _ in range(7)] + [King('white')],
    ])
    assert game.is_check('black'), print(game)
    assert game.is_checkmate('black'), print(game)
Exemple #14
0
def convert_from_string_gameboard(serializable_gameboard):
    """
    Get gameboard from the serializable entity.

    Note: This information is only useful for display purposes. (information such as whether castling is still a
    valid move does not exist here).

    :param game_board: list of lists containing "wp" or "bk" to represent white pawn or black knight.
    :return: list of list containing instances of the Piece class
    """
    gameboard = []
    for row in serializable_gameboard:
        gameboard_row = []
        for piece in row:
            piece_col = ""
            if piece == "_":
                gameboard_row.append(BlankPiece())
            else:
                if piece[0] == "w":
                    piece_col = "white"
                elif piece[0] == "b":
                    piece_col = "black"
                if piece[1] == "r":
                    gameboard_row.append(Rook(piece_col))
                elif piece[1] == "h":
                    gameboard_row.append(Knight(piece_col))
                elif piece[1] == "b":
                    gameboard_row.append(Bishop(piece_col))
                elif piece[1] == "q":
                    gameboard_row.append(Queen(piece_col))
                elif piece[1] == "k":
                    gameboard_row.append(King(piece_col))
                elif piece[1] == "p":
                    gameboard_row.append(Pawn(piece_col))
        gameboard.append(gameboard_row)
    return gameboard
Exemple #15
0
def test_sliding_pieces(player_col, opponent_col):
    _ = BlankPiece()
    r = Rook(player_col)
    b = Bishop(player_col)
    q = Queen(player_col)

    # Enemy rook
    e = Rook(opponent_col)
    # Friendly Pawn
    f = Pawn(player_col)
    f.has_never_moved = False

    #            0  1  2  3  4  5  6  7
    board = [
        [r, _, _, e, _, _, _, _],  # 0
        [_, _, _, _, _, _, r, _],  # 1
        [_, _, q, _, _, _, f, _],  # 2
        [_, _, _, _, _, _, _, _],  # 3
        [_, _, _, _, _, _, _, _],  # 4
        [_, _, _, b, _, _, _, _],  # 5
        [_, _, _, _, _, _, _, _],  # 6
        [_, _, e, _, _, _, _, f]  # 7
    ]

    # Top-left rook
    assert_length(board[0][0].get_move_set(board, [0, 0], []), 0)
    assert_contains(
        board[0][0].get_attack_set(board, [0, 0], []),
        create_list_of_moves(
            MoveType.NORMAL,
            [0, 0],
            [  # Down
                [1, 0],
                [2, 0],
                [3, 0],
                [4, 0],
                [5, 0],
                [6, 0],
                [7, 0],
                # Right
                [0, 1],
                [0, 2],
                [0, 3]
            ]))

    # Second rook
    assert_length(board[1][6].get_move_set(board, [1, 6], []), 0)
    assert_contains(
        board[1][6].get_attack_set(board, [1, 6], []),
        create_list_of_moves(
            MoveType.NORMAL,
            [1, 6],
            [  # Up
                [0, 6],
                # Left
                [1, 5],
                [1, 4],
                [1, 3],
                [1, 2],
                [1, 1],
                [1, 0],
                # Right
                [1, 7]
            ]))

    # Bishop
    assert_length(board[5][3].get_move_set(board, [5, 3], []), 0)
    assert_contains(
        board[5][3].get_attack_set(board, [5, 3], []),
        create_list_of_moves(
            MoveType.NORMAL,
            [5, 3],
            [  # North-west
                [4, 2],
                [3, 1],
                [2, 0],
                # North-east
                [4, 4],
                [3, 5],
                # South-west
                [6, 2],
                [7, 1],
                # South-east
                [6, 4],
                [7, 5]
            ]))

    # Queen
    assert_length(board[2][2].get_move_set(board, [2, 2], []), 0)
    assert_contains(
        board[2][2].get_attack_set(board, [2, 2], []),
        create_list_of_moves(
            MoveType.NORMAL,
            [2, 2],
            [  # Down
                [3, 2],
                [4, 2],
                [5, 2],
                [6, 2],
                [7, 2],
                # Up
                [1, 2],
                [0, 2],
                # Left
                [2, 0],
                [2, 1],
                # Right
                [2, 3],
                [2, 4],
                [2, 5],
                # North-west
                [1, 1],
                # North-east
                [1, 3],
                [0, 4],
                # South-west
                [3, 1],
                [4, 0],
                # South-east
                [3, 3],
                [4, 4],
                [5, 5],
                [6, 6]
            ]))
 def test_create_pieces(self):
     self.assertEqual(create_piece('k'), King())
     self.assertEqual(create_piece('q'), Queen())
     self.assertEqual(create_piece('b'), Bishop())
     self.assertEqual(create_piece('r'), Rook())
     self.assertEqual(create_piece('n'), Knight())
Exemple #17
0
def test_bishop_can_moves():
    bishop = Bishop('White')
    board = Board(initial_pieces={'f1': bishop})
    board.move('f1', 'h3')
    assert board.get_piece('h3') is bishop
    assert board.get_piece('f1') is None
Exemple #18
0
def test_insufficient_material_states():
    __ = BlankPiece()
    wk = King("white")
    bk = King("black")

    #             0   1   2   3   4   5   6   7
    board = [
        [__, __, __, __, __, __, __, __],  # 0
        [__, __, __, __, __, __, __, __],  # 1
        [__, __, __, __, __, __, wk, __],  # 2
        [__, __, __, __, __, __, __, __],  # 3
        [__, __, bk, __, __, __, __, __],  # 4
        [__, __, __, __, __, __, __, __],  # 5
        [__, __, __, __, __, __, __, __],  # 6
        [__, __, __, __, __, __, __, __]  # 7
    ]
    assert_true("Just kings should impossible to checkmate",
                is_impossible_to_reach_checkmate(board))

    bB = Bishop("black")
    #     0   1   2   3   4   5   6   7
    board = [
        [__, __, __, __, __, __, __, __],  # 0
        [__, __, __, __, __, __, __, __],  # 1
        [__, __, __, __, __, __, wk, __],  # 2
        [__, __, __, __, __, __, __, __],  # 3
        [__, __, bk, __, __, __, __, __],  # 4
        [__, __, __, __, __, __, bB, __],  # 5
        [__, __, __, __, __, __, __, __],  # 6
        [__, __, __, __, __, __, __, __]  # 7
    ]
    assert_true("King vs King and bishop should be impossible to checkmate",
                is_impossible_to_reach_checkmate(board))

    bH = Knight("black")
    #     0   1   2   3   4   5   6   7
    board = [
        [__, __, __, __, __, __, __, __],  # 0
        [__, __, __, __, __, __, __, __],  # 1
        [__, __, __, __, __, __, wk, __],  # 2
        [__, __, __, __, __, __, __, __],  # 3
        [__, __, bk, __, __, __, __, __],  # 4
        [__, __, __, __, __, __, bH, __],  # 5
        [__, __, __, __, __, __, __, __],  # 6
        [__, __, __, __, __, __, __, __]  # 7
    ]
    assert_true("King vs King and Knight should be impossible checkmate",
                is_impossible_to_reach_checkmate(board))

    wb = Bishop("white")
    bb = Bishop("black")
    #     0   1   2   3   4   5   6   7
    board = [
        [__, __, __, __, __, __, __, __],  # 0
        [__, __, __, __, __, __, __, __],  # 1
        [__, __, wk, __, __, __, __, __],  # 2
        [__, __, __, __, __, __, __, wb],  # 3
        [__, __, bk, __, __, __, __, __],  # 4
        [__, __, __, __, __, __, __, bb],  # 5
        [__, __, __, __, __, __, __, __],  # 6
        [__, __, __, __, __, __, __, __]  # 7
    ]
    assert_true(
        "King and Bishop vs King and Bishop should be impossible if they are on the same color square",
        is_impossible_to_reach_checkmate(board))

    #     0   1   2   3   4   5   6   7
    board = [
        [__, __, __, __, __, __, __, __],  # 0
        [__, __, __, __, __, __, __, __],  # 1
        [__, __, wk, __, __, __, __, __],  # 2
        [__, __, __, __, __, __, __, wb],  # 3
        [__, __, bk, __, __, __, __, bb],  # 4
        [__, __, __, __, __, __, __, __],  # 5
        [__, __, __, __, __, __, __, __],  # 6
        [__, __, __, __, __, __, __, __]  # 7
    ]
    assert_false(
        "King and Bishop vs King and Bishop should be POSSIBLE to reach checkmate if they're on different "
        "colours", is_impossible_to_reach_checkmate(board))

    # Does not matter the amount of Bishops as long as they are on the same color square
    #     0   1   2   3   4   5   6   7
    board = [
        [__, __, __, __, __, __, __, __],  # 0
        [__, __, __, __, __, wb, __, __],  # 1
        [__, __, wk, __, __, __, __, __],  # 2
        [__, __, __, __, __, __, __, wb],  # 3
        [__, __, bk, __, __, __, __, __],  # 4
        [__, __, __, __, __, wb, __, bb],  # 5
        [__, __, __, __, __, __, __, __],  # 6
        [__, __, __, __, __, __, __, wb]  # 7
    ]
    assert_true(
        "King and Bishop(s) vs King and Bishop(s) should be impossible if they are on the same color square",
        is_impossible_to_reach_checkmate(board))

    #     0   1   2   3   4   5   6   7
    board = [
        [__, __, __, __, __, __, __, __],  # 0
        [__, __, __, __, __, wb, __, __],  # 1
        [__, __, wk, __, __, __, __, __],  # 2
        [__, __, __, __, __, __, __, wb],  # 3
        [__, __, bk, __, __, __, __, __],  # 4
        [__, __, __, __, __, wb, __, bb],  # 5
        [__, __, __, __, __, __, __, wb],  # 6
        [__, __, __, __, __, __, __, wb]  # 7
    ]
    assert_false(
        "King and Bishop(s) vs King and Bishop(s) should be POSSIBLE as not all on same color square",
        is_impossible_to_reach_checkmate(board))
Exemple #19
0
 def test_instantiate_with_different_cases(self):
     self.assertIsInstance(Bishop('WhItE'), Bishop)
     self.assertIsInstance(Bishop('wHiTe'), Bishop)
     self.assertIsInstance(Bishop('White'), Bishop)
Exemple #20
0
def test_pieces_should_have_correct_name():
    assert Bishop('white').name == 'White Bishop'
Exemple #21
0
def test_can_instantiate_with_different_cases():
    assert isinstance(Bishop('WhItE'), Bishop)
    assert isinstance(Bishop('wHiTe'), Bishop)
Exemple #22
0
def test_pieces_cant_be_instatiated_with_invalid_color():
    with pytest.raises(InvalidChessColor):
        Bishop('blue')
Exemple #23
0
def test_pieces_should_have_correct_color():
    assert Bishop('black').color == 'black'
    assert Bishop('white').color == 'white'
Exemple #24
0
 def test_bishop_is_black(self):
     bishop = Bishop('black')
     self.assertEqual('black', bishop.color)
Exemple #25
0
 def test_bishop_name(self):
     bishop = Bishop('white')
     self.assertEqual('Bishop', bishop.name)
Exemple #26
0
 def test_bishop_is_white(self):
     bishop = Bishop('white')
     self.assertEqual('white', bishop.color)
Exemple #27
0
from chess.pieces import Horse
from chess.pieces import Bishop
from chess.pieces import King
from chess.pieces import Queen
from chess.pieces import Pawn
from chess.pieces import Empty

import pytest

from itertools import product

pieces = [
    King('white'),
    Queen('white'),
    Horse('white'),
    Bishop('white'),
    Tower('white'),
    Pawn('white'),
]


@pytest.mark.parametrize("piece", pieces)
def test_no_moves_outside_board(piece):
    """Test that a piece cannot move outside the board."""
    for i in range(8):
        for j in range(8):
            new_board = Board([[Empty() for i in range(8)] for j in range(8)])
            new_board[i, j] = piece
            for move in piece.moves():
                assert move in product(
                    range(8),
Exemple #28
0
 def test_bishop_move(self):
     bishop = Bishop('white')
     self.assertTrue(bishop.can_move('f1', 'g2'))
     self.assertTrue(bishop.can_move('f1', 'a6'))
Exemple #29
0
def test_bishop_cant_moves():
    board = Board(initial_pieces={'f1': Bishop('White')})
    with pytest.raises(ImpossibleMove):
        board.move('f1', 'f3')
Exemple #30
0
 def test_fail_bishop_move(self):
     bishop = Bishop('white')
     self.assertFalse(bishop.can_move('f1', 'f2'))
     self.assertFalse(bishop.can_move('a1', 'a3'))