def test_invalid_one_move_recreation(valid_one_move_pieces): valid_one_move_pieces[0].king = True min_max = MinMax(1, 1) with pytest.raises(ValueError): min_max.get_move_by_pieces(valid_one_move_pieces)
def test_multi_move_recreation(valid_multi_move_pieces): min_max = MinMax(1, 1) piece_1 = CheckersPiece(position=29, player=1, king=True) piece_2 = CheckersPiece(position=25, player=2, king=True) piece_3 = CheckersPiece(position=18, player=2, king=True) piece_4 = CheckersPiece(position=11, player=2, king=True) min_max.load_game([piece_1, piece_2, piece_3, piece_4]) move: List[Tuple[int, int]] = min_max.get_move_by_pieces( valid_multi_move_pieces) assert move == [[29, 22], [22, 15], [15, 8]]
def test_piece_removal(valid_multi_move_pieces): min_max = MinMax(1, 1) piece_1 = CheckersPiece(position=29, player=1, king=True) piece_2 = CheckersPiece(position=25, player=2, king=True) piece_3 = CheckersPiece(position=18, player=2, king=True) piece_4 = CheckersPiece(position=11, player=2, king=True) min_max.load_game([piece_1, piece_2, piece_3, piece_4]) old_game: Game = deepcopy(min_max._game) move_list = min_max.get_move_by_pieces(valid_multi_move_pieces) for move in move_list: min_max.move(*move) removed_pieces = min_max.get_removed_pieces(old_game, min_max._game, min_max._game.whose_turn()) assert removed_pieces == [25, 18, 11]
def test_pascal(): min_max = MinMax(1, 2) min_max.move(12, 16) # 24 - 19 move_list = [{ 'position': 1, 'player': 1, 'king': False }, { 'position': 2, 'player': 1, 'king': False }, { 'position': 3, 'player': 1, 'king': False }, { 'position': 4, 'player': 1, 'king': False }, { 'position': 5, 'player': 1, 'king': False }, { 'position': 6, 'player': 1, 'king': False }, { 'position': 7, 'player': 1, 'king': False }, { 'position': 8, 'player': 1, 'king': False }, { 'position': 9, 'player': 1, 'king': False }, { 'position': 10, 'player': 1, 'king': False }, { 'position': 11, 'player': 1, 'king': False }, { 'position': 16, 'player': 1, 'king': False }, { 'position': 19, 'player': 2, 'king': False }, { 'position': 21, 'player': 2, 'king': False }, { 'position': 22, 'player': 2, 'king': False }, { 'position': 23, 'player': 2, 'king': False }, { 'position': 25, 'player': 2, 'king': False }, { 'position': 26, 'player': 2, 'king': False }, { 'position': 27, 'player': 2, 'king': False }, { 'position': 28, 'player': 2, 'king': False }, { 'position': 29, 'player': 2, 'king': False }, { 'position': 30, 'player': 2, 'king': False }, { 'position': 31, 'player': 2, 'king': False }, { 'position': 32, 'player': 2, 'king': False }] t = [] for move in move_list: t.append(CheckersPiece(**move)) moves = min_max.get_move_by_pieces(t) assert moves == [[24, 19]]
def test_one_move_recreation(valid_one_move_pieces): min_max = MinMax(1, 1) move: List[Tuple[int, int]] = min_max.get_move_by_pieces(valid_one_move_pieces) assert move == [[9, 14]]