def test_max_base_power_player(): player = MaxBasePowerPlayer(start_listening=False) PseudoBattle = namedtuple( "PseudoBattle", ( "available_moves", "available_switches", "can_z_move", "can_dynamax", "can_mega_evolve", ), ) battle = PseudoBattle([], [], False, False, False) assert player.choose_move(battle) == "/choose default" battle.available_switches.append(Pokemon(species="ponyta")) assert player.choose_move(battle) == "/choose switch ponyta" battle.available_moves.append(Move("protect")) assert player.choose_move(battle) == "/choose move protect" battle.available_moves.append(Move("quickattack")) assert player.choose_move(battle) == "/choose move quickattack" battle.available_moves.append(Move("flamethrower")) assert player.choose_move(battle) == "/choose move flamethrower"
def test_hiddenpower_types(): hidden_power_bug = Move("hiddenpowerbug") hidden_power_fire = Move("hiddenpowerfire") hidden_power_water = Move("hiddenpowerwater") assert hidden_power_bug.type == PokemonType.BUG assert hidden_power_fire.type == PokemonType.FIRE assert hidden_power_water.type == PokemonType.WATER
def test_flags(): flame_thrower = Move("flamethrower") sludge_bomb = Move("sludgebomb") assert flame_thrower.flags == {"protect", "mirror"} assert sludge_bomb.flags == {"bullet", "protect", "mirror"} for move in move_generator(): assert isinstance(move.flags, set)
def test_can_z_move(): metronome = Move("metronome") flame_thrower = Move("flamethrower") assert metronome.can_z_move is False assert flame_thrower.can_z_move is True for move in move_generator(): assert isinstance(move.can_z_move, bool)
def test_terrain(): flame_thrower = Move("flamethrower") electric_terrain = Move("electricterrain") assert electric_terrain.terrain == "electricterrain" assert flame_thrower.terrain is None for move in move_generator(): assert isinstance(move.terrain, str) or move.terrain is None
def test_random_player(): from poke_env.player import player as player_pkg from poke_env.environment.battle import Battle player = RandomPlayer(start_listening=False) PseudoBattle = namedtuple( "PseudoBattle", ( "available_moves", "available_switches", "can_z_move", "can_dynamax", "can_mega_evolve", ), ) battle = PseudoBattle([], [], False, False, False) player_pkg.Battle = PseudoBattle assert player.choose_move(battle).message == "/choose default" battle.available_switches.append(Pokemon(species="ponyta")) assert player.choose_move(battle).message == "/choose switch ponyta" battle.available_moves.append(Move("protect")) assert player.choose_move(battle).message in { "/choose move protect", "/choose switch ponyta", } battle.available_moves.append(Move("quickattack")) assert player.choose_move(battle).message in { "/choose move protect", "/choose switch ponyta", "/choose move quickattack", } battle.available_moves.append(Move("flamethrower")) assert player.choose_move(battle).message in { "/choose move protect", "/choose switch ponyta", "/choose move quickattack", "/choose move flamethrower", } assert {player.choose_move(battle).message for _ in range(500)} == { "/choose move protect", "/choose switch ponyta", "/choose move quickattack", "/choose move flamethrower", } player_pkg.Battle = ( Battle # this is in case a test runner shares memory between tests )
def test_volatile_status(): flame_thrower = Move("flamethrower") heal_block = Move("healblock") assert heal_block.volatile_status == "healblock" assert flame_thrower.volatile_status is None for move in move_generator(): assert isinstance(move.volatile_status, str) or move.volatile_status is None
def test_slot_condition(): flame_thrower = Move("flamethrower") healing_wish = Move("healingwish") assert healing_wish.slot_condition == "healingwish" assert flame_thrower.slot_condition is None for move in move_generator(): assert isinstance(move.slot_condition, str) or move.slot_condition is None
def test_side_condition(): flame_thrower = Move("flamethrower") quick_guard = Move("quickguard") assert quick_guard.side_condition == "quickguard" assert flame_thrower.side_condition is None for move in move_generator(): assert isinstance(move.side_condition, str) or move.side_condition is None
def test_is_z(): flame_thrower = Move("flamethrower") clangorous_soul_blaze = Move("clangoroussoulblaze") assert clangorous_soul_blaze.is_z is True assert flame_thrower.is_z is False for move in move_generator(): assert isinstance(move.is_z, bool)
def test_crit_ratio(): aeroblast = Move("aeroblast") flame_thrower = Move("flamethrower") assert aeroblast.crit_ratio == 2 assert flame_thrower.crit_ratio == 0 for move in move_generator(): assert isinstance(move.crit_ratio, int)
def test_force_switch(): flame_thrower = Move("flamethrower") dragon_tail = Move("dragontail") assert flame_thrower.force_switch is False assert dragon_tail.force_switch is True for move in move_generator(): assert isinstance(move.force_switch, bool)
def test_no_pp_boosts(): flame_thrower = Move("flamethrower") sketch = Move("sketch") assert sketch.no_pp_boosts is True assert flame_thrower.no_pp_boosts is False for move in move_generator(): assert isinstance(move.no_pp_boosts, bool)
def test_self_destruct(): flame_thrower = Move("flamethrower") self_destruct = Move("selfdestruct") assert self_destruct.self_destruct == "always" assert flame_thrower.self_destruct is None for move in move_generator(): assert move.self_destruct is None or isinstance(move.self_destruct, str)
def test_ignore_evasion(): flame_thrower = Move("flamethrower") chipaway = Move("chipaway") assert chipaway.ignore_evasion is True assert flame_thrower.ignore_evasion is False for move in move_generator(): assert isinstance(move.ignore_evasion, bool)
def test_ignore_ability(): flame_thrower = Move("flamethrower") menacing_moonraze_maelstrom = Move("menacingmoonrazemaelstrom") assert menacing_moonraze_maelstrom.ignore_ability is True assert flame_thrower.ignore_ability is False for move in move_generator(): assert isinstance(move.ignore_ability, bool)
def test_non_ghost_target(): flame_thrower = Move("flamethrower") curse = Move("curse") assert curse.non_ghost_target is True assert flame_thrower.non_ghost_target is False for move in move_generator(): assert isinstance(move.non_ghost_target, bool)
def test_boosts(): sharpen = Move("sharpen") flame_thrower = Move("flamethrower") assert flame_thrower.boosts is None assert sharpen.boosts == {"atk": 1} for move in move_generator(): assert move.boosts is None or isinstance(move.boosts, dict)
def test_pseudo_weather(): flame_thrower = Move("flamethrower") fairy_lock = Move("fairylock") assert flame_thrower.pseudo_weather is None assert fairy_lock.pseudo_weather == "fairylock" for move in move_generator(): assert isinstance(move.pseudo_weather, str) or move.pseudo_weather is None
def test_use_target_offensive(): flame_thrower = Move("flamethrower") foul_play = Move("foulplay") assert foul_play.use_target_offensive is True assert flame_thrower.use_target_offensive is False for move in move_generator(): assert isinstance(move.use_target_offensive, bool)
def test_thaws_target(): flame_thrower = Move("flamethrower") scald = Move("scald") assert scald.thaws_target is True assert flame_thrower.thaws_target is False for move in move_generator(): assert isinstance(move.thaws_target, bool)
def test_type(): flame_thrower = Move("flamethrower") scald = Move("scald") assert scald.type == PokemonType["WATER"] assert flame_thrower.type == PokemonType["FIRE"] for move in move_generator(): assert isinstance(move.type, PokemonType)
def test_target(): flame_thrower = Move("flamethrower") earthquake = Move("earthquake") assert earthquake.target == "allAdjacent" assert flame_thrower.target == "normal" for move in move_generator(): assert isinstance(move.target, str)
def test_terrain(): flame_thrower = Move("flamethrower") electric_terrain = Move("electricterrain") assert electric_terrain.terrain == Field.ELECTRIC_TERRAIN assert flame_thrower.terrain is None for move in move_generator(): assert isinstance(move.terrain, Field) or move.terrain is None
def test_steals_boosts(): flame_thrower = Move("flamethrower") spectral_thief = Move("spectralthief") assert spectral_thief.steals_boosts is True assert flame_thrower.steals_boosts is False for move in move_generator(): assert isinstance(move.steals_boosts, bool)
def test_stalling_move(): flame_thrower = Move("flamethrower") kings_shield = Move("kingsshield") assert kings_shield.stalling_move is True assert flame_thrower.stalling_move is False for move in move_generator(): assert isinstance(move.stalling_move, bool)
def test_sleep_usable(): flame_thrower = Move("flamethrower") sleep_talk = Move("sleeptalk") assert sleep_talk.sleep_usable is True assert flame_thrower.sleep_usable is False for move in move_generator(): assert isinstance(move.sleep_usable, bool)
def test_drain(): draining_kiss = Move("drainingkiss") flame_thrower = Move("flamethrower") assert draining_kiss.drain == 0.75 assert flame_thrower.drain == 0 for move in move_generator(): assert isinstance(move.drain, float) assert 0 <= move.drain <= 1
def test_heal(): roost = Move("roost") flame_thrower = Move("flamethrower") assert roost.heal == 0.5 assert flame_thrower.heal == 0 for move in move_generator(): assert isinstance(move.heal, float) assert 0 <= move.heal <= 1
def test_recoil(): flare_blitz = Move("flareblitz") flame_thrower = Move("flamethrower") assert flare_blitz.recoil == 0.33 assert flame_thrower.recoil == 0 for move in move_generator(): assert isinstance(move.recoil, float) assert 0 <= move.recoil <= 1