def test_choose_random_move_doubles(example_doubles_request): logger = MagicMock() battle = DoubleBattle("tag", "username", logger) battle._parse_request(example_doubles_request) battle._switch("p2a: Tyranitar", "Tyranitar, L50, M", "48/48") player = RandomPlayer() active_pokemon_1, active_pokemon_2 = battle.active_pokemon choice_1 = player.choose_random_move(battle) assert (any([move in choice_1 for move in active_pokemon_1.moves]) or "/choose switch" in choice_1) assert (any([move in choice_1 for move in active_pokemon_2.moves]) or ",switch" in choice_1) choices_100 = [player.choose_random_move(battle) for _ in range(100)] assert not any([" 2" in choice for choice in choices_100]) assert any(["1" in choice for choice in choices_100]) assert any(["-1" in choice for choice in choices_100]) assert any(["-2" in choice for choice in choices_100]) assert any(["dynamax" in choice for choice in choices_100]) assert not any([choice.count("dynamax") == 2 for choice in choices_100]) assert any([choice.count("switch") == 2 for choice in choices_100]) battle._switch("p2b: Charizard", "Charizard, L50, M", "48/48") choices_100 = [player.choose_random_move(battle) for _ in range(100)] assert any([" 2" in choice for choice in choices_100])
def test_choose_random_move_doubles(pseudo_random, example_doubles_request): logger = MagicMock() battle = DoubleBattle("tag", "username", logger) player = RandomPlayer() battle._parse_request(example_doubles_request) battle._switch("p2a: Tyranitar", "Tyranitar, L50, M", "48/48") pseudo_random.side_effect = lambda: 0 choice = player.choose_random_move(battle) assert choice.message == "/choose move psychic -2, move geargrind -1" pseudo_random.side_effect = lambda: 0.5 choice = player.choose_random_move(battle) assert (choice.message == "/choose switch zamazentacrowned, move geargrind dynamax -1") pseudo_random.side_effect = lambda: 0.999 choice = player.choose_random_move(battle) assert choice.message == "/choose move slackoff dynamax, switch thundurus" battle._switch("p2b: Excadrill", "Excadrill, L50, M", "48/48") pseudo_random.side_effect = lambda: 0 choice = player.choose_random_move(battle) assert choice.message == "/choose move psychic -2, move geargrind -1" pseudo_random.side_effect = lambda: 0.5 choice = player.choose_random_move(battle) assert choice.message == "/choose move slackoff, move wildcharge dynamax 2" pseudo_random.side_effect = lambda: 0.999 choice = player.choose_random_move(battle) assert choice.message == "/choose move slackoff dynamax, switch thundurus"
def test_choose_random_move_doubles(pseudo_random, example_doubles_request): # possible_choices_memo = ( # [] # ) # this needs to be reset at each start of Player.choose_random_move # def count_substrings(substring: str, in_: List[str]) -> int: # return sum(map(lambda el: substring in el, in_)) # def choose_non_dynamax(first_orders,) -> str: # joined = DoubleBattleOrder.join_orders(possible_choices) # possible_choices_memo.append(possible_choices.copy()) # for possible_choice in possible_choices: # if " dynamax" not in possible_choice: # return possible_choice # raise ValueError(f"Only max moves are available in {possible_choices}") logger = MagicMock() battle = DoubleBattle("tag", "username", logger) player = RandomPlayer() battle._parse_request(example_doubles_request) battle._switch("p2a: Tyranitar", "Tyranitar, L50, M", "48/48") pseudo_random.side_effect = lambda: 0 choice = player.choose_random_move(battle) assert choice.message == "/choose move psychic -2, move geargrind -1" pseudo_random.side_effect = lambda: 0.5 choice = player.choose_random_move(battle) assert (choice.message == "/choose switch zamazentacrowned, move geargrind dynamax -1") pseudo_random.side_effect = lambda: 0.999 choice = player.choose_random_move(battle) assert choice.message == "/choose move slackoff dynamax, switch thundurus" battle._switch("p2b: Excadrill", "Excadrill, L50, M", "48/48") pseudo_random.side_effect = lambda: 0 choice = player.choose_random_move(battle) assert choice.message == "/choose move psychic -2, move geargrind -1" pseudo_random.side_effect = lambda: 0.5 choice = player.choose_random_move(battle) assert choice.message == "/choose move slackoff, move wildcharge dynamax 2" pseudo_random.side_effect = lambda: 0.999 choice = player.choose_random_move(battle) assert choice.message == "/choose move slackoff dynamax, switch thundurus"