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
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)
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)
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])
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)
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)
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)
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
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)
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)
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)
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))
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)
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)
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())
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)
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)
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())
def setUp(self): self.battler = Battler() self.battler.active = Pokemon('pikachu', 100) self.battler.active.moves = [ Move('thunderbolt'), Move('volttackle'), Move('agility'), Move('doubleteam'), ]
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)
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)
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)
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)
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])
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)
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)
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)
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)
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())
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)