class BishopTests(unittest.TestCase):
    def setUp(self):
        chess_coord_white = ChessCoord('F', '8')
        self.bishop_white = Bishop(chess_coord_white, white)
        chess_coord_black = ChessCoord('E', '3')
        self.bishop_black = Bishop(chess_coord_black, black)

    def test_constructor_white(self):
        self.failUnless(self.bishop_white.letter == 'B')
        self.failUnless(self.bishop_white.chess_coord == ChessCoord('F', '8'))
        self.failUnless(self.bishop_white.grid_coord == GridCoord(5, 7))
        self.failUnless(self.bishop_white.colour == white)
        self.failUnless(self.bishop_white.symbol == '♗')
        self.failUnless(util.compare_lists(self.bishop_white.move_directions,
                                           directions.move_directions_bishop()))

    def test_constructor_black(self):
        self.failUnless(self.bishop_black.letter == 'B')
        self.failUnless(self.bishop_black.chess_coord == ChessCoord('E', '3'))
        self.failUnless(self.bishop_black.grid_coord == GridCoord(4, 2))
        self.failUnless(self.bishop_black.colour == black)
        self.failUnless(self.bishop_black.symbol == '♝')
        self.failUnless(util.compare_lists(self.bishop_black.move_directions,
                                           directions.move_directions_bishop()))

    def test_white_bishop_allowed_to_move_south3_west3(self):
        pieces = []
        self.failUnless(self.bishop_white.inspect_move(pieces,
                                                       ChessCoord('C', '5')).is_valid_move)

    def test_black_bishop_allowed_to_move_north4_west4(self):
        pieces = []
        self.failUnless(self.bishop_black.inspect_move(pieces,
                                                       ChessCoord('A', '7')).is_valid_move)
    def test_taking_king_not_allowed(self):
        d4_bishop = Bishop(ChessCoord('D', '4'), black)
        e3_king = King(ChessCoord('E', '3'), white)
        pieces = [d4_bishop, e3_king]
        move_inspect_result = d4_bishop.inspect_move(pieces, ChessCoord('E', '3'))

        self.failUnless(move_inspect_result ==
                        MoveInspectResult(False, True, [], e3_king))