def test_random_teampreview(): player = SimplePlayer() logger = MagicMock() battle = Battle("tag", "username", logger) battle._team = [None for _ in range(6)] teampreview_orders = [ player.random_teampreview(battle) for _ in range(1000) ] for order in teampreview_orders: assert len(order) == len("/team 123456") assert order.startswith("/team") assert set(order[-6:]) == set([str(n) for n in range(1, 7)]) teampreview_orders = [player.teampreview(battle) for _ in range(1000)] for order in teampreview_orders: assert len(order) == len("/team 123456") assert order.startswith("/team") assert set(order[-6:]) == set([str(n) for n in range(1, 7)]) battle._team = [None for _ in range(4)] teampreview_orders = [ player.random_teampreview(battle) for _ in range(1000) ] for order in teampreview_orders: assert len(order) == len("/team 1234") assert order.startswith("/team") assert set(order[-4:]) == set([str(n) for n in range(1, 5)]) teampreview_orders = [player.teampreview(battle) for _ in range(1000)] for order in teampreview_orders: assert len(order) == len("/team 1234") assert order.startswith("/team") assert set(order[-4:]) == set([str(n) for n in range(1, 5)]) battle._team = [None for _ in range(2)] teampreview_orders = [ player.random_teampreview(battle) for _ in range(1000) ] for order in teampreview_orders: assert len(order) == len("/team 12") assert order.startswith("/team") assert set(order[-2:]) == set([str(n) for n in range(1, 3)]) teampreview_orders = [player.teampreview(battle) for _ in range(1000)] for order in teampreview_orders: assert len(order) == len("/team 12") assert order.startswith("/team") assert set(order[-2:]) == set([str(n) for n in range(1, 3)])
def test_dynamax(): logger = MagicMock() battle = Battle("tag", "username", logger) battle._player_role = "p1" hydreigon = Pokemon(species="hydreigon") hydreigon._active = True battle._team = {"p1: Hydreigon": hydreigon} assert battle.active_pokemon.is_dynamaxed is not True battle._parse_message(["", "-start", "p1: Hydreigon", "dynamax"]) assert battle.active_pokemon.is_dynamaxed assert battle.dynamax_turns_left == 3 battle._parse_message(["", "-end", "p1: Hydreigon", "dynamax"]) assert not battle.active_pokemon.is_dynamaxed assert battle.dynamax_turns_left is None assert not battle.can_dynamax
def test_reward_computing_helper(): player = CustomEnvPlayer( player_configuration=player_configuration, server_configuration=server_configuration, start_listening=False, battle_format="gen7randombattles", ) battle_1 = Battle("bat1", player.username, player.logger) battle_2 = Battle("bat2", player.username, player.logger) battle_3 = Battle("bat3", player.username, player.logger) battle_4 = Battle("bat4", player.username, player.logger) assert ( player.reward_computing_helper( battle_1, fainted_value=0, hp_value=0, number_of_pokemons=4, starting_value=0, status_value=0, victory_value=1, ) == 0 ) battle_1._won = True assert ( player.reward_computing_helper( battle_1, fainted_value=0, hp_value=0, number_of_pokemons=4, starting_value=0, status_value=0, victory_value=1, ) == 1 ) assert ( player.reward_computing_helper( battle_2, fainted_value=0, hp_value=0, number_of_pokemons=4, starting_value=0.5, status_value=0, victory_value=5, ) == -0.5 ) battle_2._won = False assert ( player.reward_computing_helper( battle_2, fainted_value=0, hp_value=0, number_of_pokemons=4, starting_value=0, status_value=0, victory_value=5, ) == -5 ) battle_3._team = {i: Pokemon(species="slaking") for i in range(4)} battle_3._opponent_team = {i: Pokemon(species="slowbro") for i in range(3)} battle_3._team[0].status = Status["FRZ"] battle_3._team[1]._current_hp = 100 battle_3._team[1]._max_hp = 200 battle_3._opponent_team[0].status = Status["FNT"] battle_3._opponent_team[1].status = Status["FNT"] # Opponent: two fainted, one full hp opponent # You: one half hp mon, one frozen mon assert ( player.reward_computing_helper( battle_3, fainted_value=2, hp_value=3, number_of_pokemons=4, starting_value=0, status_value=0.25, victory_value=100, ) == 2.25 ) battle_3._won = True assert ( player.reward_computing_helper( battle_3, fainted_value=2, hp_value=3, number_of_pokemons=4, starting_value=0, status_value=0.25, victory_value=100, ) == 100 ) battle_4._team, battle_4._opponent_team = battle_3._opponent_team, battle_3._team assert ( player.reward_computing_helper( battle_4, fainted_value=2, hp_value=3, number_of_pokemons=4, starting_value=0, status_value=0.25, victory_value=100, ) == -2.25 )