Esempio n. 1
0
 def test_normal_move(self):
     board = Board(False)
     board.load_fen("8/8/8/8/8/8/8/4K3 w kQkq - 0 1")
     self.assertEqual(board.at((4, 0)), WK)
     self.assertEqual(True, bool(board.move((4, 0), (4, 1), 5)))
     self.assertEqual(board.at((4, 0)), None)
     self.assertEqual(board.at((4, 1)), WK)
Esempio n. 2
0
 def test_promotion_move(self):
     board = Board(False)
     board.load_fen("8/4P3/8/8/8/8/8/8 w kQkq - 0 1")
     self.assertEqual(board.at((4, 6)), WP)
     self.assertEqual(True, bool(board.move((4, 6), (4, 7), 5)))
     # ToDo: verificar. Vai ser sempre rainha?
     self.assertEqual(board.at((4, 7)), WQ)
     self.assertEqual(board.at((4, 6)), None)
Esempio n. 3
0
 def test_left_en_passant_move(self):
     board = Board(False)
     board.load_fen("8/3p4/8/4P3/8/8/8/8 b kQkq - 0 1")
     self.assertEqual(True, bool(board.move((3, 6), (3, 4), 5)))
     self.assertEqual(board.at((4, 4)), WP)
     self.assertEqual(board.at((3, 4)), BP)
     self.assertEqual(True, bool(board.move((4, 4), (3, 5), 5)))
     self.assertEqual(board.at((4, 4)), None)
     self.assertEqual(board.at((3, 5)), WP)
     self.assertEqual(board.at((3, 4)), None)
Esempio n. 4
0
 def test_kingside_castling_move(self):
     board = Board(False)
     board.load_fen("4k2r/8/8/8/8/8/8/8 b kQkq - 0 1")
     self.assertEqual(board.at((4, 7)), BK)
     self.assertEqual(board.at((7, 7)), BR)
     self.assertEqual(True, bool(board.move((4, 7), (6, 7), 5)))
     self.assertEqual(board.at((4, 7)), None)
     self.assertEqual(board.at((7, 7)), None)
     self.assertEqual(board.at((6, 7)), BK)
     self.assertEqual(board.at((5, 7)), BR)
Esempio n. 5
0
 def test_queenside_castling_move(self):
     board = Board(False)
     board.load_fen("8/8/8/8/8/8/8/R3K3 w kQkq - 0 1")
     self.assertEqual(board.at((4, 0)), WK)
     self.assertEqual(board.at((0, 0)), WR)
     self.assertEqual(True, bool(board.move((4, 0), (2, 0), 5)))
     self.assertEqual(board.at((4, 0)), None)
     self.assertEqual(board.at((0, 0)), None)
     self.assertEqual(board.at((2, 0)), WK)
     self.assertEqual(board.at((3, 0)), WR)
Esempio n. 6
0
    def test_create_board_new_game_true(self):
        board = Board(True)
        # Pawn
        for x in xrange(8):
            self.assertEqual(board.at((x, 6)), BP)
            self.assertEqual(board.at((x, 1)), WP)

        # Rook
        self.assertEqual(board.at((0, 0)), WR)
        self.assertEqual(board.at((7, 0)), WR)
        self.assertEqual(board.at((0, 7)), BR)
        self.assertEqual(board.at((7, 7)), BR)

        # Knight
        self.assertEqual(board.at((1, 0)), WN)
        self.assertEqual(board.at((6, 0)), WN)
        self.assertEqual(board.at((1, 7)), BN)
        self.assertEqual(board.at((6, 7)), BN)

        # Bishop
        self.assertEqual(board.at((2, 0)), WB)
        self.assertEqual(board.at((5, 0)), WB)
        self.assertEqual(board.at((2, 7)), BB)
        self.assertEqual(board.at((5, 7)), BB)

        # Queen
        self.assertEqual(board.at((3, 0)), WQ)
        self.assertEqual(board.at((3, 7)), BQ)

        # King
        self.assertEqual(board.at((4, 0)), WK)
        self.assertEqual(board.at((4, 7)), BK)
Esempio n. 7
0
 def test_black_pawn_at_e2_with_enemy_at_f1_should_be_promoted_at_f1(self):
     board = Board(False)
     board.load_fen("8/8/8/8/8/8/4p3/5P2 b kQkq f3 0 1")
     pos = (4, 1)
     possible_moves = moves(pos, [(4, 0), (5, 0)])
     self.assertEqual(tuples(board.piece_moves(pos)), possible_moves)
     board.move((4, 1), (5, 0), 5)
     self.assertEqual(board.at((5, 0)), "black queen")
Esempio n. 8
0
 def test_white_pawn_at_e7_with_enemy_at_f8_should_be_promoted_at_f8(self):
     board = Board(False)
     board.load_fen("5p2/4P3/8/8/8/8/8/8 w kQkq f3 0 1")
     pos = (4, 6)
     possible_moves = moves(pos, [(4, 7), (5, 7)])
     self.assertEqual(tuples(board.piece_moves(pos)), possible_moves)
     board.move((4, 6), (5, 7), 5)
     self.assertEqual(board.at((5, 7)), "white queen")
Esempio n. 9
0
 def test_create_board_new_game_false(self):
     board = Board(False)
     for x in xrange(8):
         for y in xrange(8):
             self.assertEqual(board.at((x, y)), None)
Esempio n. 10
0
 def test_checkmate(self):
     board = Board(False)
     board.load_fen("4k3/8/8/5R2/8/8/8/3R1R2 w kQkq - 0 1")
     self.assertEqual(True, bool(board.move((5, 4), (4, 4), 5)))
     self.assertEqual(board.at((5, 4)), None)
     self.assertEqual(board.at((4, 4)), WR)
Esempio n. 11
0
 def test_invalid_keep_check(self):
     board = Board(False)
     board.load_fen("8/4P3/8/8/8/8/4P3/r3Kr2 w kQkq - 0 1")
     self.assertEqual(False, board.move((4, 0), (5, 0), 5))
     self.assertEqual(board.at((4, 0)), WK)
     self.assertEqual(board.at((5, 0)), BR)
Esempio n. 12
0
 def test_get_from_invalid_position_returns_none(self):
     board = Board(False)
     self.assertEqual(board.at((-4, 4)), None)
Esempio n. 13
0
 def test_get_from_valid_position_with_piece_returns_piece(self):
     board = Board(False)
     board.load_fen("8/8/8/4N3/8/8/8/8 w kQkq - 0 1")
     self.assertEqual(board.at((4, 4)), WN)
Esempio n. 14
0
 def test_get_from_valid_position_without_piece_returns_none(self):
     board = Board(False)
     self.assertEqual(board.at((4, 4)), None)