Beispiel #1
0
    def setUp(self):
        self.battle = Battle(None)
        self.battle.user.name = 'p1'
        self.battle.opponent.name = 'p2'

        self.opponent_active = Pokemon('caterpie', 100)
        self.battle.opponent.active = self.opponent_active
        self.battle.opponent.active.ability = None

        self.user_active = Pokemon('weedle', 100)
        self.battle.user.active = self.user_active

        self.username = "******"

        self.battle.username = self.username
Beispiel #2
0
    def test_preserves_previous_status_condition(self):
        self.get_mega_name_mock.return_value = 'venusaurmega'

        pkmn = Pokemon('venusaur', 100)
        pkmn.status = constants.BURN
        pkmn.try_convert_to_mega()
        self.assertEqual(constants.BURN, pkmn.status)
Beispiel #3
0
 def test_gets_all_moves_when_an_unknown_set_is_there(self):
     self.get_sets_mock.return_value = {
         constants.SETS: {
             "grassknot|hiddenpowerice60|voltswitch|volttackle": 16,
             "grassknot|hiddenpowerice60|irontail|poisonjab": 33
         },
         constants.MOVES: {
             "grassknot": 1,
             "hiddenpowerice60": 1,
             "voltswitch": 1,
             "volttackle": 1,
             "irontail": 1,
             "poisonjab": 1,
         }
     }
     expected_moves = [
         Move("tackle"),
         Move("grassknot"),
         Move("hiddenpowerice60"),
         Move("voltswitch"),
         Move("volttackle"),
         Move("irontail"),
         Move("poisonjab")
     ]
     p = Pokemon('pikachu', 100)
     p.moves = [Move("tackle")]
     p.update_moves_for_random_battles()
     self.assertEqual(expected_moves, p.moves)
Beispiel #4
0
    def test_preserves_previous_boosts(self):
        self.get_mega_name_mock.return_value = 'venusaurmega'

        pkmn = Pokemon('venusaur', 100)
        pkmn.boosts[constants.ATTACK] = 1
        pkmn.try_convert_to_mega()
        self.assertEqual(1, pkmn.boosts[constants.ATTACK])
Beispiel #5
0
    def test_preserves_previous_moves(self):
        self.get_mega_name_mock.return_value = 'venusaurmega'

        pkmn = Pokemon('venusaur', 100)
        pkmn.moves = [
            {
                '1': '2'
            },
            {
                '3': '4'
            },
            {
                '5': '6'
            },
            {
                '7': '8'
            },
        ]
        pkmn.try_convert_to_mega()
        expected_moves = [
            {
                '1': '2'
            },
            {
                '3': '4'
            },
            {
                '5': '6'
            },
            {
                '7': '8'
            },
        ]
        self.assertEqual(expected_moves, pkmn.moves)
Beispiel #6
0
    def test_preserves_previous_hitpoints(self):
        self.get_mega_name_mock.return_value = 'venusaurmega'

        pkmn = Pokemon('venusaur', 100)
        pkmn.hp = 1
        pkmn.try_convert_to_mega()
        self.assertEqual(1, pkmn.hp)
Beispiel #7
0
    def test_converts_when_it_is_in_sets_lookup_and_check_sets_is_true(self):
        self.pkmn_sets_mock.pokemon_sets = {"venusaurmega": {}}
        self.get_mega_name_mock.return_value = 'venusaurmega'

        pkmn = Pokemon('venusaur', 100)
        pkmn.try_convert_to_mega(check_in_sets=True)
        self.assertEqual("venusaurmega", pkmn.name)
Beispiel #8
0
    def setUp(self):
        self.battle = Battle(None)
        self.battle.user.name = 'p1'
        self.battle.opponent.name = 'p2'

        self.opponent_active = Pokemon('caterpie', 100)
        self.battle.opponent.active = self.opponent_active
Beispiel #9
0
    def test_switch_opponents_pokemon_successfully_creates_new_pokemon_for_active(
            self):
        new_pkmn = Pokemon('weedle', 100)
        split_msg = ['', 'switch', 'p2a: weedle', 'Weedle, L100, M', '100/100']
        switch_or_drag(self.battle, split_msg)

        self.assertEqual(new_pkmn, self.battle.opponent.active)
Beispiel #10
0
    def test_already_seen_pokemon_is_the_same_object_as_the_one_in_the_reserve(
            self):
        already_seen_pokemon = Pokemon('weedle', 100)
        self.battle.opponent.reserve.append(already_seen_pokemon)
        split_msg = ['', 'switch', 'p2a: weedle', 'Weedle, L100, M', '100/100']
        switch_or_drag(self.battle, split_msg)

        self.assertIs(already_seen_pokemon, self.battle.opponent.active)
Beispiel #11
0
    def test_does_not_convert_when_it_is_not_in_sets_lookup_and_check_sets_is_true(
            self):
        self.pkmn_sets_mock.standard_battle_sets = {}
        self.get_mega_name_mock.return_value = 'venusaurmega'

        pkmn = Pokemon('venusaur', 100)
        pkmn.try_convert_to_mega(check_in_sets=True)
        self.assertEqual("venusaur", pkmn.name)
Beispiel #12
0
    def test_switch_into_already_seen_pokemon_does_not_create_a_new_pokemon(
            self):
        already_seen_pokemon = Pokemon('weedle', 100)
        self.battle.opponent.reserve.append(already_seen_pokemon)
        split_msg = ['', 'switch', 'p2a: weedle', 'Weedle, L100, M', '100/100']
        switch_or_drag(self.battle, split_msg)

        self.assertEqual(1, len(self.battle.opponent.reserve))
Beispiel #13
0
    def test_does_not_convert_if_item_is_revealed(self):
        self.pkmn_sets_mock.standard_battle_sets = {}
        self.get_mega_name_mock.return_value = 'venusaurmega'

        pkmn = Pokemon('venusaur', 100)
        pkmn.item = 'leftovers'
        pkmn.try_convert_to_mega()
        self.assertEqual("venusaur", pkmn.name)
Beispiel #14
0
    def test_does_not_convert_if_item_is_none(self):
        self.pkmn_sets_mock.pokemon_sets = {}
        self.get_mega_name_mock.return_value = 'venusaurmega'

        pkmn = Pokemon('venusaur', 100)
        pkmn.item = None
        pkmn.try_convert_to_mega()
        self.assertEqual("venusaur", pkmn.name)
Beispiel #15
0
    def test_gets_multiple_switches_and_splash(self):
        self.battle.user.active.moves = []
        self.battle.opponent.active.moves = []

        self.battle.user.reserve = [
            Pokemon('caterpie', 100),
            Pokemon('spinarak', 100)
        ]
        self.battle.opponent.reserve = [
            Pokemon('caterpie', 100),
            Pokemon('houndour', 100)
        ]

        expected_options = (['switch caterpie', 'switch spinarak'],
                            ['splash', 'switch caterpie', 'switch houndour'])

        self.assertEqual(expected_options, self.battle.get_all_options())
Beispiel #16
0
    def test_preserves_base_name_when_form_changes(self):
        self.battle.opponent.active = Pokemon('meloetta', 100)
        split_msg = [
            '', '-formechange', 'p2a: Meloetta', 'Meloetta - Pirouette',
            '[msg]'
        ]
        form_change(self.battle, split_msg)

        self.assertEqual('meloetta', self.battle.opponent.active.base_name)
Beispiel #17
0
    def test_changes_with_formechange_message(self):
        self.battle.opponent.active = Pokemon('meloetta', 100)
        split_msg = [
            '', '-formechange', 'p2a: Meloetta', 'Meloetta - Pirouette',
            '[msg]'
        ]
        form_change(self.battle, split_msg)

        self.assertEqual('meloettapirouette', self.battle.opponent.active.name)
Beispiel #18
0
    def test_gets_one_switch_and_splash(self):
        self.battle.user.active.moves = []
        self.battle.opponent.active.moves = []

        self.battle.user.reserve = [Pokemon('caterpie', 100)]
        self.battle.opponent.reserve = [Pokemon('caterpie', 100)]

        expected_options = (
            [
                'switch caterpie'
            ],
            [
                'splash',
                'switch caterpie'
            ]
        )

        self.assertEqual(expected_options, self.battle.get_all_options())
Beispiel #19
0
 def setUp(self):
     self.battler = Battler()
     self.battler.active = Pokemon('pikachu', 100)
     self.battler.active.moves = [
         Move('thunderbolt'),
         Move('volttackle'),
         Move('agility'),
         Move('doubleteam'),
     ]
Beispiel #20
0
    def test_preserves_status(self):
        self.battle.opponent.active = Pokemon('meloetta', 100)
        self.battle.opponent.active.status = constants.BURN
        split_msg = [
            '', '-formechange', 'p2a: Meloetta', 'Meloetta - Pirouette',
            '[msg]'
        ]
        form_change(self.battle, split_msg)

        self.assertEqual(constants.BURN, self.battle.opponent.active.status)
Beispiel #21
0
    def test_gets_four_moves_when_none_are_known(self):
        p = Pokemon('pikachu', 100)

        moves = [('move1', 95), ('move2', 94), ('move3', 93), ('move4', 92)]

        moves = p.get_possible_moves(moves)

        expected_result = (['move1', 'move2', 'move3', 'move4'], [])

        self.assertEqual(expected_result, moves)
Beispiel #22
0
 def test_guesses_most_likely_item(self):
     self.get_sets_mock.return_value = {
         constants.ITEMS: {
             "item_one": 10,
             "item_two": 9
         }
     }
     p = Pokemon('pikachu', 100)
     p.item = constants.UNKNOWN_ITEM
     p.update_item_for_random_battles()
     self.assertEqual("item_one", p.item)
Beispiel #23
0
 def test_gets_most_likely_ability(self):
     self.get_sets_mock.return_value = {
         constants.ABILITIES: {
             "immunity": 10,
             "sandveil": 9
         }
     }
     p = Pokemon('gligar', 100)
     p.ability = None
     p.update_ability_for_random_battles()
     self.assertEqual("immunity", p.ability)
Beispiel #24
0
    def test_preserves_boosts(self):
        self.battle.opponent.active = Pokemon('meloetta', 100)
        self.battle.opponent.active.boosts = {constants.ATTACK: 2}
        split_msg = [
            '', '-formechange', 'p2a: Meloetta', 'Meloetta - Pirouette',
            '[msg]'
        ]
        form_change(self.battle, split_msg)

        self.assertEqual(2,
                         self.battle.opponent.active.boosts[constants.ATTACK])
Beispiel #25
0
    def test_chance_moves_are_not_affected_by_known_moves(self):
        p = Pokemon('pikachu', 100)
        p.moves = [Move('tackle')]

        moves = [('move1', 95), ('move2', 40), ('move3', 40), ('move4', 40)]

        moves = p.get_possible_moves(moves)

        expected_result = (['move1'], ['move2', 'move3', 'move4'])

        self.assertEqual(expected_result, moves)
Beispiel #26
0
    def test_does_not_get_moves_below_threshold(self):
        p = Pokemon('pikachu', 100)

        moves = [('move1', 95), ('move2', 94), ('move3', 50), ('move4', 25),
                 ('move5', 25), ('move6', 15), ('move7', 15)]

        moves = p.get_possible_moves(moves)

        expected_result = (['move1', 'move2'], ['move3', 'move4', 'move5'])

        self.assertEqual(expected_result, moves)
Beispiel #27
0
    def test_gets_only_first_3_moves_when_one_move_is_known(self):
        p = Pokemon('pikachu', 100)
        p.moves = [Move('tackle')]

        moves = [('move1', 95), ('move2', 94), ('move3', 93), ('move4', 92)]

        moves = p.get_possible_moves(moves)

        expected_result = (['move1', 'move2', 'move3'], [])

        self.assertEqual(expected_result, moves)
Beispiel #28
0
    def test_multiple_forme_changes_does_not_ruin_base_name(self):
        self.battle.user.active = Pokemon('pikachu', 100)
        self.battle.opponent.active = Pokemon('pikachu', 100)
        self.battle.opponent.reserve = []
        self.battle.opponent.reserve.append(Pokemon('wishiwashi', 100))

        m1 = [
            '', 'switch', 'p2a: Wishiwashi', 'Wishiwashi, L100, M', '100/100'
        ]
        m2 = [
            '', '-formechange', 'p2a: Wishiwashi', 'Wishiwashi-School', '',
            '[from] ability: Schooling'
        ]
        m3 = ['', 'switch', 'p2a: Pikachu', 'Pikachu, L100, M', '100/100']
        m4 = [
            '', 'switch', 'p2a: Wishiwashi', 'Wishiwashi, L100, M', '100/100'
        ]
        m5 = [
            '', '-formechange', 'p2a: Wishiwashi', 'Wishiwashi-School', '',
            '[from] ability: Schooling'
        ]
        m6 = ['', 'switch', 'p2a: Pikachu', 'Pikachu, L100, M', '100/100']
        m7 = [
            '', 'switch', 'p2a: Wishiwashi', 'Wishiwashi, L100, M', '100/100'
        ]
        m8 = [
            '', '-formechange', 'p2a: Wishiwashi', 'Wishiwashi-School', '',
            '[from] ability: Schooling'
        ]

        switch_or_drag(self.battle, m1)
        form_change(self.battle, m2)
        switch_or_drag(self.battle, m3)
        switch_or_drag(self.battle, m4)
        form_change(self.battle, m5)
        switch_or_drag(self.battle, m6)
        switch_or_drag(self.battle, m7)
        form_change(self.battle, m8)

        pkmn = Pokemon("wishiwashischool", 100)
        self.assertNotIn(pkmn, self.battle.opponent.reserve)
Beispiel #29
0
    def test_opponent_has_no_moves_results_in_splash_or_switches(self):
        self.battle.user.active.moves = [
            Move('tackle'),
            Move('charm'),
        ]
        self.battle.opponent.active.moves = []

        self.battle.user.reserve = [
            Pokemon('caterpie', 100),
            Pokemon('spinarak', 100)
        ]
        self.battle.opponent.reserve = [Pokemon('caterpie', 100)]

        expected_options = ([
            'tackle', 'charm', 'switch caterpie', 'switch spinarak'
        ], [
            'splash',
            'switch caterpie',
        ])

        self.assertEqual(expected_options, self.battle.get_all_options())
Beispiel #30
0
    def test_gets_less_likely_moves_as_chance_moves(self):
        p = Pokemon('pikachu', 100)

        moves = [('move1', 95), ('move2', 94), ('move3', 50), ('move4', 25),
                 ('move5', 25), ('move6', 25), ('move7', 25)]

        moves = p.get_possible_moves(moves)

        expected_result = (['move1', 'move2'],
                           ['move3', 'move4', 'move5', 'move6', 'move7'])

        self.assertEqual(expected_result, moves)