def test_talk_to_recruitable_character(self): interaction = { 'dialog': [ "Hurry up ! Leave the village from the west, and enter the necropolis.", "The clock is ticking... The ogre's bones must be returned to their original place." ], 'join_team': True } actor = random_character_entity() character_test = random_character_entity(interaction=interaction) character_test.talk(actor) self.assertTrue(character_test.join_team)
def test_talk_to_character(self): interaction = { 'dialog': [ "Hurry up ! Leave the village from the west, and enter the necropolis.", "The clock is ticking... The ogre's bones must be returned to their original place." ], 'join_team': False } actor = random_character_entity() character_test = random_character_entity(interaction=interaction) entries = character_test.talk(actor) self.assertEqual(2, len(entries))
def test_attack_with_weapon(self): weapon = random_weapon(strong_against=[]) equipments = [weapon] character_test = random_character_entity(equipments=equipments) self.assertEqual(character_test.strength + weapon.atk, character_test.attack(random_foe_entity()))
def test_save_and_load_character(self): interaction = { 'dialog': [ "Hurry up ! Leave the village from the west, and enter the necropolis.", "The clock is ticking... The ogre's bones must be returned to their original place." ], 'join_team': False } character = random_character_entity(name='jist', classes=['innkeeper'], race='human', interaction=interaction) character_saved = character.save('ally') loaded_character = load_ally(character_saved, True, 0, 0) self.assertEqual(character.name, loaded_character.name) self.assertEqual(character.pos, loaded_character.pos) self.assertEqual(character.hp, loaded_character.hp) self.assertEqual(character.defense, loaded_character.defense) self.assertEqual(character.res, loaded_character.res) self.assertEqual(character.strength, loaded_character.strength) self.assertEqual(character.classes, loaded_character.classes) self.assertEqual(character.equipments, loaded_character.equipments) self.assertEqual(character.strategy, loaded_character.strategy) self.assertEqual(character.lvl, loaded_character.lvl) self.assertEqual(character.skills, loaded_character.skills) self.assertEqual(character.race, loaded_character.race) self.assertEqual(character.gold, loaded_character.gold) self.assertEqual(character.interaction, loaded_character.interaction) self.assertEqual(character.join_team, loaded_character.join_team) self.assertEqual(character.alterations, loaded_character.alterations)
def test_interact_no_interaction(self): house = random_building(is_interactive=False) actor = random_character_entity() actor_gold_before = actor.gold actor_items_before = actor.items.copy() entries = house.interact(actor) print(entries) self.assertEqual(actor_gold_before, actor.gold) self.assertEqual(actor_items_before, actor.items)
def test_interact_talks_only(self): house = random_building(min_talks=1, gold=False, item=False) actor = random_character_entity() actor_gold_before = actor.gold actor_items_before = actor.items.copy() entries = house.interact(actor) print(entries) self.assertEqual(actor_gold_before, actor.gold) self.assertEqual(actor_items_before, actor.items)
def test_interact(self): name = 'tavern' pos = (3, 2) sprite = 'imgs/houses/blue_house.png' interaction = None items = [random_item(), random_item()] shop = Shop(name, pos, sprite, interaction, items) actor = random_character_entity() entries = shop.interact(actor) print(entries)
def test_interact_gold_reward(self): house = random_building(min_gold=10, item=False) interaction = house.interaction actor = random_character_entity() actor_gold_before = actor.gold actor_items_before = actor.items.copy() entries = house.interact(actor) print(entries) self.assertEqual(actor_gold_before + interaction['gold'], actor.gold) self.assertEqual(actor_items_before, actor.items)
def test_parried(self): parry_rate = 100 equipments = [random_shield(parry_rate=parry_rate)] character_test = random_character_entity(equipments=equipments) self.assertTrue(character_test.parried()) parry_rate = 0 equipments = [random_shield(parry_rate=parry_rate)] character_test.equipments = equipments self.assertFalse(character_test.parried())
def test_save_and_load_character_with_alterations(self): character = random_character_entity(name="jist", classes=['innkeeper']) alteration = random_alteration() other_alteration = random_alteration() character.set_alteration(alteration) character.set_alteration(other_alteration) character_saved = character.save('ally') loaded_character = load_ally(character_saved, True, 0, 0) self.assertEqual(character.alterations, loaded_character.alterations)
def test_interact_multiple_times(self): house = random_building() actor = random_character_entity() entries = house.interact(actor) print("-- FIRST VISIT --") print(entries) actor_gold_before = actor.gold actor_items_before = actor.items.copy() entries = house.interact(actor) print("-- SECOND VISIT --") print(entries) self.assertEqual(actor_gold_before, actor.gold) self.assertEqual(actor_items_before, actor.items)
def test_attacked_while_having_equipments(self): defense = 2 res = 3 equipments = [random_equipment(defense=defense, res=res)] character_test = random_character_entity(equipments=equipments) # Physical attack damage = character_test.defense + 5 character_test.attacked(random_foe_entity(), damage, DamageKind.PHYSICAL, []) self.assertEqual(character_test.hp_max - 3, character_test.hp) character_test.healed() # Mental attack damage = character_test.res + 5 character_test.attacked(random_foe_entity(), damage, DamageKind.SPIRITUAL, []) self.assertEqual(character_test.hp_max - 2, character_test.hp)
def test_lvl_up(self): character_test = random_character_entity(lvl=3) hp_before = character_test.hp_max character_test.lvl_up() self.assertEqual(4, character_test.lvl) self.assertNotEqual(hp_before, character_test.hp_max)