Exemple #1
0
 def test_dragon_damage_reduction(self):
     red = monsters.RedDragon()
     green = monsters.GreenDragon()
     red.take_damage(4)
     green.take_damage(4)
     self.assertEqual(red.hp, red.maxhp)
     self.assertEqual(green.hp, green.maxhp)
Exemple #2
0
 def test_participants(self):
     participants = [
         heroes.Warrior(),
         heroes.Mage(),
         monsters.Orc(),
         monsters.GreenDragon()
     ]
     battle = Battle(participants)
     for unit in participants:
         self.assertIn(unit, battle.participants)
Exemple #3
0
 def test_first_attacker(self):
     participants = [
         heroes.Warrior(),
         heroes.Mage(),
         monsters.Orc(),
         monsters.GreenDragon()
     ]
     battle = Battle(participants)
     self.assertTrue(
         isinstance(battle.current_attacker(), monsters.GreenDragon))
 def test_create_levelled_green_dragon(self):
     dragon = monsters.GreenDragon(level=5)
     expected_stats = {'str': 18,
                       'con': 24,
                       'int': 12,
                       'spd': 18,
                       'maxhp': 148}
     actual_stats = {'str': dragon.strength,
                     'con': dragon.constitution,
                     'int': dragon.intelligence,
                     'spd': dragon.speed,
                     'maxhp': dragon.maxhp}
     self.assertEqual(dragon.level, 5)
     self.assertEqual(actual_stats, expected_stats)
     self.assertEqual(dragon.hp, dragon.maxhp)
Exemple #5
0
    def test_one_round_of_combat(self):
        warr = heroes.Warrior()
        mage = heroes.Mage()
        orc = monsters.Orc()
        dragon = monsters.GreenDragon()
        participants = [warr, mage, orc, dragon]
        battle = Battle(participants)

        expected_output = [('GreenDragon hits', 'with poison breath for',
                            'damage!'),
                           ('Orc hits', 'with blood rage for', 'damage!'),
                           ('Orc takes', 'self-inflicted damage!'),
                           ("Mage's turn!", )]
        output = []
        while not battle.is_hero_turn():
            output.extend(battle.next_turn())
        else:
            output.extend(battle.next_turn())

        for line, expected in zip(output, expected_output):
            for item in expected:
                self.assertIn(item, line)

        expected_output = [('Mage hits Orc with fireball for', 'damage!'),
                           ("Warrior's turn!", )]
        output = battle.execute_command('fireball', orc)

        for line, expected in zip(output, expected_output):
            for item in expected:
                self.assertIn(item, line)

        expected_output = [
            ('Warrior hits Orc with shield slam for', 'damage!'),
            ('Orc dies!', ), ('XP rewarded!', ), ('is now level 2!', ),
            ('is now level 2!', ),
            ('GreenDragon hits', 'with tail swipe for', 'damage!'),
            ("Mage's turn!")
        ]
        output = battle.execute_command('shield_slam', orc)

        for line, expected in zip(output, expected_output):
            for item in expected:
                self.assertIn(item, line)
Exemple #6
0
 def test_green_dragon_breath_weapon(self):
     dragon = monsters.GreenDragon()
     dragon.poison_breath(self.dummy)
     self.assertEqual(self.dummy.hp, self.dummy.maxhp - 36)
Exemple #7
0
 def test_green_dragon_tail_swipe(self):
     dragon = monsters.GreenDragon()
     dragon.tail_swipe(self.dummy)
     self.assertEqual(self.dummy.hp, self.dummy.maxhp - 45)