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)
示例#6
0
    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)