Пример #1
0
 def setUp(self):
     with open('data/heros.json') as data_file:
         heros = json.loads(data_file.read())
         index = random.randint(0,3)
         self.testHero = Hero(heros[index])
Пример #2
0
class TestHero(unittest.TestCase):

    def setUp(self):
        with open('data/heros.json') as data_file:
            heros = json.loads(data_file.read())
            index = random.randint(0,3)
            self.testHero = Hero(heros[index])

    def test_attack_equal_own_damage(self):
        """
            Hero.attack() equal to hero damage
        """
        self.assertEqual(self.testHero.attack(0), self.testHero.damage )

    def test_receiveDamage_hp_decrease(self):
        """
            Hero.hp should decrease after receiving damage
        """
        # store the starting hp
        prev = self.testHero.hp
        # calculate the realDamage (with armor reduction)
        realDamage = 10.0 * self.testHero.damageMultiplier()
        # calculate the hp that should be left after attack
        hpLeft = self.testHero.hp - realDamage
        # receive damage
        self.testHero.receiveDamage(10.0)

        self.assertGreater(prev, self.testHero.hp)
        self.assertLess(self.testHero.hp, prev)
        self.assertEqual(self.testHero.hp, hpLeft)

    def test_receiveDamage_set_dead(self):
        """
            Hero should die after receiving letal damage
        """
        self.testHero.hp = 5.0
        self.testHero.receiveDamage(10.0)

        self.assertTrue(self.testHero.dead)

    def test_receiveDamage_return_damage(self):
        """
            Hero.receiveDamage() should return the received damage
        """
        # equal to received damage when armor == 0
        self.testHero.armor = 0
        self.assertEqual(self.testHero.receiveDamage(10.0), 10.0)

        # less than received damage when armor > 0
        self.testHero.armor = 5.0
        self.assertLess(self.testHero.receiveDamage(10.0), 10.0)

        # greater than received damage when armor < 0
        self.testHero.armor = -5.0
        self.assertGreater(self.testHero.receiveDamage(10.0), 10.0)

    def test_damageMultiplier_armor_values(self):
        """
            Hero.damageMultiplier() should return a multiplier according to the self.armor
        """
        # equal to 1.0 when armor == 0
        self.testHero.armor = 0
        self.assertEqual(self.testHero.damageMultiplier(), 1.0)

        # less than 1.0 when armor > 0
        self.testHero.armor = 5.0
        self.assertLess(self.testHero.damageMultiplier(), 1.0)

        # greater than 1.0 when armor < 0
        self.testHero.armor = -5.0
        self.assertGreater(self.testHero.damageMultiplier(), 1.0)

    def test_isDead_and_die(self):
        """
            Hero.die() should set Hero.dead to True
            Hero.isDead() should be equal to Hero.dead
        """
        self.assertFalse(self.testHero.dead)
        self.assertFalse(self.testHero.isDead())
        self.assertEqual(self.testHero.isDead(), self.testHero.dead)

        self.testHero.die()

        self.assertTrue(self.testHero.dead)
        self.assertTrue(self.testHero.isDead())
        self.assertEqual(self.testHero.isDead(), self.testHero.dead)

    def test_attacksFirst(self):
        """
            Hero.attacksFirst() returns {bool} wheter or not
            the Hero attacks first
        """
        attacksFirst = self.testHero.attacksFirst()
        self.assertIs(type(attacksFirst), bool)
        
    def test_heal(self):
        """
            Hero.heal() increases hero hp a 25% of origina healt
        """
        # store the initialHp
        initialHp = self.testHero.hp
        # modify hp value
        self.testHero.hp = 1.0
        # calculate the healed hp
        healedHp = self.testHero.hp + initialHp * 0.25
        self.testHero.heal()
        self.assertEqual(self.testHero.hp, healedHp)