def test_filter_moves_lance_method(self, color, moves_1, moves_2, filtered_1, filtered_2): self.game.board = self.sample_board self.game.board[4][4] = Lance(color, (4, 4)) self.game.board[4][3] = Lance(color, (4, 3)) self.game.board[2][4] = Pawn("white", (2, 4)) self.game.board[2][3] = Pawn("black", (2, 3)) self.game.board[6][4] = Pawn("white", (6, 4)) self.game.board[6][3] = Pawn("black", (6, 3)) self.assertEqual(self.game.board[4][4].filter_moves(moves_1, self.game.board), filtered_1) self.assertEqual(self.game.board[4][3].filter_moves(moves_2, self.game.board), filtered_2)
def test_normal_pieces_promoted(self, color, valid, obstacle, capture): pieces = [Pawn, Lance, Knight, SilverGeneral] self.game.board = self.sample_board for piece in pieces: self.game.board[4][4] = piece(color, (4, 4)) self.game.board[4][4].promote() self.assertEqual(self.game.board[4][4].movement_promoted(self.game.board), valid) self.game.board[5][4] = self.game.board[3][4] = Pawn(color, (1, 1)) self.assertEqual(self.game.board[4][4].movement_promoted(self.game.board), obstacle) self.game.board[5][4] = self.game.board[3][4] = Pawn("color", (1, 1)) self.assertEqual(self.game.board[4][4].movement_promoted(self.game.board), capture)
def test_goldgeneral_moves(self, color, valid, obstacle, capture): self.game.board = self.sample_board self.game.board[4][4] = GoldGeneral(color, (4, 4)) self.assertEqual( self.game.board[4][4].movement_unpromoted(self.game.board), valid) self.game.board[5][4] = self.game.board[3][4] = Pawn(color, (1, 1)) self.assertEqual( self.game.board[4][4].movement_unpromoted(self.game.board), obstacle) self.game.board[5][4] = self.game.board[3][4] = Pawn("color", (1, 1)) self.assertEqual( self.game.board[4][4].movement_unpromoted(self.game.board), capture)
def test_bishop_moves_unpromoted(self, color, valid, obstacle, capture): self.game.board = self.sample_board self.game.board[4][4] = Bishop(color, (4, 4)) self.assertEqual( self.game.board[4][4].movement_unpromoted(self.game.board), valid) self.game.board[2][2] = self.game.board[2][6] = Pawn(color, (1, 1)) self.assertEqual( self.game.board[4][4].movement_unpromoted(self.game.board), obstacle) self.game.board[2][2] = self.game.board[2][6] = Pawn("color", (1, 1)) self.assertEqual( self.game.board[4][4].movement_unpromoted(self.game.board), capture)
def test_lance_moves_unpromoted(self, color, valid, obstacle, capture): self.game.board = self.sample_board self.game.board[4][4] = Lance(color, (4, 4)) self.assertEqual( self.game.board[4][4].movement_unpromoted(self.game.board), valid) self.game.board[1][4] = self.game.board[7][4] = Pawn(color, (1, 1)) self.assertEqual( self.game.board[4][4].movement_unpromoted(self.game.board), obstacle) self.game.board[1][4] = self.game.board[7][4] = Pawn("color", (1, 1)) self.assertEqual( self.game.board[4][4].movement_unpromoted(self.game.board), capture)
def test_filter_moves_rook_method(self, color, coords_n, coords_w, coords_e, coords_s): moves_n, filtered_moves_n = coords_n moves_w, filtered_moves_w = coords_w moves_e, filtered_moves_e = coords_e moves_s, filtered_moves_s = coords_s self.game.board = self.sample_board self.game.board[4][4] = Rook(color, (4, 4)) self.game.board[2][4] = Pawn("white", (2, 4)) self.game.board[4][2] = Pawn("black", (4, 2)) self.game.board[4][6] = Pawn("white", (4, 6)) self.game.board[6][4] = Pawn("black", (6, 4)) self.assertEqual(self.game.board[4][4].filter_moves(moves_n, self.game.board), filtered_moves_n) self.assertEqual(self.game.board[4][4].filter_moves(moves_w, self.game.board), filtered_moves_w) self.assertEqual(self.game.board[4][4].filter_moves(moves_e, self.game.board), filtered_moves_e) self.assertEqual(self.game.board[4][4].filter_moves(moves_s, self.game.board), filtered_moves_s)
def test_rook_moves_promoted(self, color, valid, obstacle, capture): self.game.board = self.sample_board self.game.board[4][4] = Rook(color, (4, 4)) self.game.board[4][4].promote() self.assertEqual( self.game.board[4][4].movement_promoted(self.game.board), valid) self.game.board[4][2] = self.game.board[4][6] = Pawn(color, (1, 1)) self.assertEqual( self.game.board[4][4].movement_promoted(self.game.board), obstacle) self.game.board[4][2] = self.game.board[4][6] = Pawn("color", (1, 1)) self.assertEqual( self.game.board[4][4].movement_promoted(self.game.board), capture)
def test_filter_moves_bishop_method(self, color, coords_nw, coords_ne, coords_sw, coords_se): moves_nw, filtered_moves_nw = coords_nw moves_ne, filtered_moves_ne = coords_ne moves_sw, filtered_moves_sw = coords_sw moves_se, filtered_moves_se = coords_se self.game.board = self.sample_board self.game.board[4][4] = Bishop(color, (4, 4)) self.game.board[2][2] = Pawn("white", (2, 4)) self.game.board[2][6] = Pawn("black", (4, 2)) self.game.board[6][2] = Pawn("white", (4, 6)) self.game.board[6][6] = Pawn("black", (6, 4)) self.assertEqual(self.game.board[4][4].filter_moves(moves_nw, self.game.board), filtered_moves_nw) self.assertEqual(self.game.board[4][4].filter_moves(moves_ne, self.game.board), filtered_moves_ne) self.assertEqual(self.game.board[4][4].filter_moves(moves_sw, self.game.board), filtered_moves_sw) self.assertEqual(self.game.board[4][4].filter_moves(moves_se, self.game.board), filtered_moves_se)
def test_check_if_valid_for_promotion(self, color, coordinates): row, col = coordinates self.game.board = self.sample_board self.game.board[4][4] = Pawn(color, (4, 4)) self.assertFalse(self.game.board[4][4].set_for_promotion) self.game.board[4][4].update_position(row, col) self.assertTrue(self.game.board[4][4].set_for_promotion)
def test_pawn_drop_rules_method(self, color, enemy_color, front_of_king): invalid_spaces = [(0, 3), (1, 3), (2, 3), (3, 3), (5, 3), (6, 3), (7, 3), (8, 3), (9, 3)] invalid_spaces.append(front_of_king) self.game.board = self.sample_board self.game.board[4][3] = Pawn(color, (4, 3)) self.game.board[4][4] = King(enemy_color, (4, 4)) empty_spaces = [] pawn = Pawn(color, (0, 0)) for row in range(9): for col in range(9): if self.game.board[row][col] == " ": pawn.position = (row, col) if len(pawn.movement_unpromoted(self.game.board)) > 0: empty_spaces.append((row, col)) for space in invalid_spaces: self.assertFalse(space in pawn.pawn_drop_rules(self.game.board, empty_spaces))
def test_promote_method(self): self.game.board = self.sample_board self.game.board[4][4] = Pawn("white", (4, 4)) self.assertFalse(self.game.board[4][4].promoted) self.game.board[4][4].promote() self.assertTrue(self.game.board[4][4].promoted) self.assertFalse(self.game.board[4][4].set_for_promotion)
def test_pawn_creation(self, color, orientation, position): pawn = Pawn(color, position) self.assertEqual(pawn.color, color) self.assertEqual(pawn.name, "P") self.assertFalse(pawn.promoted) self.assertFalse(pawn.set_for_promotion) self.assertFalse(pawn.captured) self.assertEqual(str(pawn), f" P{orientation}")
def test_input_destiny_coordinates_forced_promotion(self, mock): piece = Pawn("white", (1, 3)) self.play.game.board[1][3] = piece self.play.game.playerturn = "white" self.assertFalse(self.play.game.board[1][3].promoted) self.play.game.play_origin(1, 3) self.assertEqual(self.play.game.lifted_piece, piece) self.play.input_destiny_coordinates() self.assertTrue(self.play.game.board[0][3].promoted) self.assertEqual(self.play.game.board[0][3], piece)
def test_input_destiny_coordinates_ask_to_promote(self, mock): piece = Pawn("white", (3, 4)) self.play.game.board[3][4] = piece self.play.game.playerturn = "white" self.assertFalse(self.play.game.board[3][4].promoted) self.play.game.play_origin(3, 4) self.assertEqual(self.play.game.lifted_piece, piece) self.play.input_destiny_coordinates() self.assertTrue(self.play.game.board[2][4].promoted) self.assertEqual(self.play.game.board[2][4], piece)
def test_valid_method(self): unpromoted_valid = [(3, 4)] promoted_valid = [(3, 3), (3, 4), (3, 5), (4, 3), (4, 5), (5, 4)] self.game.board = self.sample_board self.game.board[4][4] = Pawn("white", (4, 4)) self.assertEqual( self.game.board[4][4].valid_moves(self.game.board), unpromoted_valid) self.game.board[4][4].promote() self.assertEqual( self.game.board[4][4].valid_moves(self.game.board), promoted_valid)
def test_valid_drops_P_method(self, color, front_of_king): piece = Pawn(color, (4, 4)) self.game.board[6][4] = self.game.board[2][4] = " " self.game.board[6][3] = self.game.board[2][3] = " " valid_spaces = [ (1, 3), (1, 4), (2, 3), (2, 4), (3, 3), (3, 4), (4, 3), (4, 4), (5, 3), (5, 4), (6, 3), (6, 4), (7, 3), (7, 4)] valid_spaces.remove(front_of_king) self.assertEqual(piece.valid_drops(self.game.board), valid_spaces)
def test_validate_origin_coordinates_location_method_invalid(self, color, coords): piece = Pawn(color, (0, 0)) piece.captured = True self.game.white_captures.append(piece) self.game.black_captures.append(piece) self.game.playerturn = color cant_drop, empty_space, cant_move, enemy_piece = coords self.assertFalse(self.game.validate_origin_coordinates_location(cant_drop[0], cant_drop[1])) self.assertEqual(self.game.error, "Cant drop this piece anywhere right now!") self.assertFalse(self.game.validate_origin_coordinates_location(empty_space[0], empty_space[1])) self.assertEqual(self.game.error, "Thats an empty space!") self.assertFalse(self.game.validate_origin_coordinates_location(cant_move[0], cant_move[1])) self.assertEqual(self.game.error, "You can't move that piece anywhere right now!") self.assertFalse(self.game.validate_origin_coordinates_location(enemy_piece[0], enemy_piece[1])) self.assertEqual(self.game.error, "Thats not one of your pieces!")
def test_filter_moves_normal_method(self, color, coords, filtered_coords): self.game.board = self.sample_board self.game.board[0][0] = King(color, (0, 0)) self.game.board[0][1] = Pawn("white", (0, 1)) self.game.board[1][0] = Pawn("black", (1, 0)) self.assertEqual(self.game.board[0][0].filter_moves(coords, self.game.board), filtered_coords)
def test_update_position_method(self): self.game.board = self.sample_board self.game.board[4][4] = Pawn("white", (4, 4)) self.assertEqual(self.game.board[4][4].position, (4, 4)) self.game.board[4][4].update_position(3, 4) self.assertEqual(self.game.board[4][4].position, (3, 4))