Ejemplo n.º 1
0
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"
Ejemplo n.º 2
0
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
Ejemplo n.º 3
0
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)
Ejemplo n.º 4
0
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)
Ejemplo n.º 5
0
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
Ejemplo n.º 6
0
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
    )
Ejemplo n.º 7
0
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
Ejemplo n.º 8
0
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
Ejemplo n.º 9
0
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
Ejemplo n.º 10
0
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)
Ejemplo n.º 11
0
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)
Ejemplo n.º 12
0
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)
Ejemplo n.º 13
0
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)
Ejemplo n.º 14
0
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)
Ejemplo n.º 15
0
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)
Ejemplo n.º 16
0
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)
Ejemplo n.º 17
0
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)
Ejemplo n.º 18
0
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)
Ejemplo n.º 19
0
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
Ejemplo n.º 20
0
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)
Ejemplo n.º 21
0
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)
Ejemplo n.º 22
0
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)
Ejemplo n.º 23
0
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)
Ejemplo n.º 24
0
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
Ejemplo n.º 25
0
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)
Ejemplo n.º 26
0
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)
Ejemplo n.º 27
0
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)
Ejemplo n.º 28
0
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
Ejemplo n.º 29
0
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
Ejemplo n.º 30
0
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