def test_more_than_possible_heal(self): destroyable = random_destroyable_entity(min_hp=30) hp_max_init = destroyable.hp_max damage = rd.randint(11, 20) destroyable.hp -= damage recovered_hp = destroyable.healed(damage + 30) self.assertEqual(recovered_hp, damage) self.assertEqual(destroyable.hp_max, destroyable.hp) self.assertEqual(hp_max_init, destroyable.hp_max)
def test_negative_damage(self): destroyable = random_destroyable_entity() attacker = random_movable_entity() kind = DamageKind.PHYSICAL allies = [] damage = rd.randint(-10, -1) returned_hp = destroyable.attacked(attacker, damage, kind, allies) self.assertEqual(returned_hp, destroyable.hp) self.assertEqual(destroyable.hp, destroyable.hp_max)
def test_more_than_letal_damage(self): destroyable = random_destroyable_entity() attacker = random_movable_entity() kind = DamageKind.PHYSICAL allies = [] damage = destroyable.hp + destroyable.defense + rd.randint(1, 20) returned_hp = destroyable.attacked(attacker, damage, kind, allies) self.assertEqual(returned_hp, destroyable.hp) self.assertEqual(destroyable.hp, 0)
def test_partial_heal(self): destroyable = random_destroyable_entity(min_hp=30) hp_max_init = destroyable.hp_max damage = rd.randint(11, 20) heal = rd.randint(1, 10) destroyable.hp -= damage recovered_hp = destroyable.healed(heal) self.assertEqual(recovered_hp, heal) self.assertEqual(destroyable.hp_max - damage + heal, destroyable.hp) self.assertEqual(hp_max_init, destroyable.hp_max)
def test_full_heal(self): destroyable = random_destroyable_entity(min_hp=30) hp_max_init = destroyable.hp_max damage = rd.randint(2, 20) destroyable.hp -= damage recovered_hp = destroyable.healed() self.assertEqual(recovered_hp, damage) self.assertEqual(destroyable.hp_max, destroyable.hp) self.assertEqual(hp_max_init, destroyable.hp_max) damage = rd.randint(2, 20) destroyable.hp -= damage recovered_hp = destroyable.healed(damage) self.assertEqual(recovered_hp, damage) self.assertEqual(destroyable.hp_max, destroyable.hp) self.assertEqual(hp_max_init, destroyable.hp_max)
def test_physical_and_spiritual_damage(self): destroyable = random_destroyable_entity(min_hp=30, max_defense=10, max_res=10) attacker = random_movable_entity() kind = DamageKind.PHYSICAL allies = [] damage = rd.randint(10, 15) returned_hp = destroyable.attacked(attacker, damage, kind, allies) self.assertEqual(returned_hp, destroyable.hp) self.assertEqual(destroyable.hp_max, destroyable.hp + damage - destroyable.defense) # Destroyable entity is healed before next attack for simplify test destroyable.hp = destroyable.hp_max kind = DamageKind.SPIRITUAL returned_hp = destroyable.attacked(attacker, damage, kind, allies) self.assertEqual(returned_hp, destroyable.hp) self.assertEqual(destroyable.hp_max, destroyable.hp + damage - destroyable.res)