def test_costume(self): # Create filter that forces settings settings = {"costume_ids": [1, 2]} mon_filter = Filters.MonFilter('costume_filter', settings) # Test events that should pass for c in [1, 2]: event = Events.MonEvent(generate_monster({"costume": c})) self.assertTrue(mon_filter.check_event(event)) # Test events that should fail for c in [3, 4]: event = Events.MonEvent(generate_monster({"costume": c})) self.assertFalse(mon_filter.check_event(event))
def gen_event(self, values): """ Generate a generic monster, overriding with an specific values. """ settings = { "encounter_id": "0", "spawnpoint_id": "0", "pokemon_id": 1, "pokemon_level": 1, "player_level": 40, "latitude": 37.7876146, "longitude": -122.390624, "disappear_time": 1506897031, "last_modified_time": 1475033386661, "time_until_hidden_ms": 5000, "seconds_until_despawn": 1754, "spawn_start": 2153, "spawn_end": 3264, "verified": False, "cp_multiplier": 0.7317000031471252, "form": None, "cp": None, "individual_attack": None, "individual_defense": None, "individual_stamina": None, "move_1": None, "move_2": None, "height": None, "weight": None, "gender": None } settings.update(values) return Events.MonEvent(settings)
def test_time_left(self): # Create the filters settings = {'min_time_left': 1000, 'max_time_left': 8000} mon_filter = Filters.MonFilter('time_filter', settings) # Test events that should pass for s in [2000, 4000, 6000]: d = (datetime.now() + timedelta(seconds=s)) t = time.mktime(d.timetuple()) event = Events.MonEvent(generate_monster({"disappear_time": t})) self.assertTrue(mon_filter.check_event(event)) # Test events that should fail for s in [200, 999, 8001]: d = (datetime.now() + timedelta(seconds=s)) t = time.mktime(d.timetuple()) event = Events.MonEvent(generate_monster({"disappear_time": t})) self.assertFalse(mon_filter.check_event(event))
def test_rarity_id(self): # Create the filters settings = {"rarity": ["common", "Very Rare"]} mon_filter = Filters.MonFilter('filter1', settings) # Generate events that should pass pass1 = Events.MonEvent(generate_monster({"rarity": 0})) pass2 = Events.MonEvent(generate_monster({"rarity": 3})) # Test passing events for e in [pass1, pass2]: self.assertTrue(mon_filter.check_event(e)) # Generate events that should fail fail1 = Events.MonEvent(generate_monster({"rarity": 1})) fail2 = Events.MonEvent(generate_monster({"rarity": 2})) fail3 = Events.MonEvent(generate_monster({"rarity": 4})) # Test failing events for e in [fail1, fail2, fail3]: self.assertFalse(mon_filter.check_event(e))
def test_distance(self): mon_event = Events.MonEvent(generate_monster({})) settings = {'min_dist': '5', 'max_dist': '2000'} mon_filter = Filters.MonFilter('distance_filter', settings) for i in [1000, 5, 2000]: mon_event.distance = i self.assertTrue(mon_filter.check_event(mon_event)) settings2 = {'min_dist': '5', 'max_dist': 500} mon_filter2 = Filters.MonFilter('distance_filter_2', settings2) for i in [4, 501, 9999]: mon_event.distance = i self.assertFalse(mon_filter2.check_event(mon_event))
def test_lvl(self): # Create the filters settings = {"min_lvl": 5, "max_lvl": 10} mon_filter = Filters.MonFilter('filter1', settings) # Generate events that should pass pass1 = Events.MonEvent(generate_monster({"pokemon_level": 5})) pass2 = Events.MonEvent(generate_monster({"pokemon_level": 7})) pass3 = Events.MonEvent(generate_monster({"pokemon_level": 10})) # Test passing events for e in [pass1, pass2, pass3]: self.assertTrue(mon_filter.check_event(e)) # Generate events that should fail fail1 = Events.MonEvent(generate_monster({"pokemon_id": 4})) fail2 = Events.MonEvent(generate_monster({"pokemon_id": 11})) fail3 = Events.MonEvent(generate_monster({"pokemon_id": 100})) # Test failing events for e in [fail1, fail2, fail3]: self.assertFalse(mon_filter.check_event(e))
def test_monsters_exclude(self): # Create the filters settings = {"monsters_exclude": [4, "5", "Charizard"]} mon_filter = Filters.MonFilter('filter1', settings) # Generate events that should pass pass1 = Events.MonEvent(generate_monster({"pokemon_id": 1})) pass2 = Events.MonEvent(generate_monster({"pokemon_id": 2})) pass3 = Events.MonEvent(generate_monster({"pokemon_id": 3})) # Test passing events for e in [pass1, pass2, pass3]: self.assertTrue(mon_filter.check_event(e)) # Generate events that should fail fail1 = Events.MonEvent(generate_monster({"pokemon_id": 4})) fail2 = Events.MonEvent(generate_monster({"pokemon_id": 5})) fail3 = Events.MonEvent(generate_monster({"pokemon_id": 6})) # Test failing events for e in [fail1, fail2, fail3]: self.assertFalse(mon_filter.check_event(e))
def test_monster_id(self): # Create the filters settings = {"monsters": [1, "2", "Venusaur"]} mon_filter = Filters.MonFilter('filter1', settings) # Generate events that should pass pass1 = Events.MonEvent(generate_monster({"pokemon_id": 1})) pass2 = Events.MonEvent(generate_monster({"pokemon_id": 2})) pass3 = Events.MonEvent(generate_monster({"pokemon_id": 3})) # Test passing events for e in [pass1, pass2, pass3]: self.assertTrue(mon_filter.check_event(e)) # Generate events that should fail fail1 = Events.MonEvent(generate_monster({"pokemon_id": 5})) fail2 = Events.MonEvent(generate_monster({"pokemon_id": 102})) fail3 = Events.MonEvent(generate_monster({"pokemon_id": 30})) # Test failing events for e in [fail1, fail2, fail3]: self.assertFalse(mon_filter.check_event(e))
def create_event(items_to_change): return Events.MonEvent(generate_monster(items_to_change))