Ejemplo n.º 1
0
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])
Ejemplo n.º 2
0
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"
Ejemplo n.º 3
0
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"