Esempio n. 1
0
    def test_string_method_prints_the_expected_string(self):
        self.hero = Hero('Miro', 100, 850, 5)

        result = Hero.__str__(self.hero)
        expected_result = f"Hero {self.hero.username}: {self.hero.level} lvl\n" \
                          f"Health: {self.hero.health}\n" \
                          f"Damage: {self.hero.damage}\n"
        self.assertEqual(result, expected_result)
Esempio n. 2
0
class TestHero(unittest.TestCase):
    def setUp(self):
        self.hero = Hero("Wizard", 70, 6000.00, 1500.00)
        self.enemy = Hero("Barbarian", 80, 10000.00, 2000.00)
        self.mario = Hero("Mario", 1, 100.00, 100.00)

    def test_init(self):
        self.assertEqual(self.hero.username, "Wizard")
        self.assertEqual(self.hero.level, 70)
        self.assertEqual(self.hero.health, 6000.00)
        self.assertEqual(self.hero.damage, 1500.00)

    def test_str(self):
        self.assertEqual(
            self.hero.__str__(), f"Hero Wizard: {self.hero.level} lvl\n"
            f"Health: {self.hero.health}\nDamage: {self.hero.damage}\n")

    def test_fight_with_yourself(self):
        with self.assertRaises(Exception) as ex:
            self.hero.battle(self.hero)
        self.assertEqual("You cannot fight yourself", str(ex.exception))

    def test_hero_with_zero_health(self):
        self.hero.health = 0
        with self.assertRaises(Exception) as ex:
            self.hero.battle(self.enemy)
        self.assertEqual(
            "Your health is lower than or equal to 0. You need to rest",
            str(ex.exception))

    def test_enemy_with_zero_health(self):
        self.enemy.health = 0
        with self.assertRaises(Exception) as ex:
            self.hero.battle(self.enemy)
        self.assertEqual(
            f"You cannot fight {self.enemy.username}. He needs to rest",
            str(ex.exception))

    def test_fight_draw_game(self):
        self.hero.battle(self.enemy)
        self.assertEqual(self.hero.health, -154000.00)
        self.assertEqual(self.enemy.health, -95000.00)
        self.assertRaises(Exception, "Draw")

    def test_fight_for_win(self):
        fight = self.hero.battle(self.mario)
        self.assertEqual(self.hero.level, 71)
        self.assertEqual(self.hero.damage, 1505.00)
        self.assertEqual(self.hero.health, 5905.00)
        self.assertEqual(fight, "You win")

    def test_fight_for_loose(self):
        self.hero = Hero("Wizard", 70, 6000.00, 10.00)
        fight = self.hero.battle(self.enemy)
        self.assertEqual(self.enemy.level, 81)
        self.assertEqual(self.enemy.damage, 2005.00)
        self.assertEqual(self.enemy.health, 9305.00)
        self.assertEqual(fight, "You lose")
Esempio n. 3
0
class HeroTest(unittest.TestCase):

    def setUp(self) -> None:
        self.hero = Hero("Bobby", 25, 98, 2)

    def test_constructor(self):
        self.assertEqual("Bobby", self.hero.username)
        self.assertEqual(25, self.hero.level)
        self.assertEqual(98, self.hero.health)
        self.assertEqual(2, self.hero.damage)

    def test_enemy_hero_and_hero_are_equal(self):
        with self.assertRaises(Exception):
            enemy_hero = Hero("Bobby", 25, 98, 2)
            self.hero.battle(enemy_hero)

    def test_battle_hero_health_less_than_zro(self):
        enemy_hero = Hero("Borko", 25, 98, 2)
        self.hero.health = 0
        with self.assertRaises(Exception):
            self.hero.battle(enemy_hero)

    def test_battle_enemy_health_less_than_zro(self):
        enemy_hero = Hero("Borko", 25, 0, 2)
        with self.assertRaises(Exception):
            self.hero.battle(enemy_hero)

    def test_player_health_when_payer_loss(self):
        enemy_hero = Hero("Borko", 25, 75, 2)
        self.assertEqual("You lose", self.hero.battle(enemy_hero) )
        self.assertEqual(48, self.hero.health)
        self.assertEqual(30, enemy_hero.health)
        self.assertEqual(26, enemy_hero.level)
        self.assertEqual(7, enemy_hero.damage)

    def test_player_health_if_payer_win(self):
        enemy_hero = Hero("Borko", 25, 50, 2)
        self.assertEqual("You win", self.hero.battle(enemy_hero))
        self.assertEqual(53, self.hero.health)
        self.assertEqual(0, enemy_hero.health)
        self.assertEqual(26, self.hero.level)
        self.assertEqual(7, self.hero.damage)

    def test_if_hero_and_enemy_are_equal_to_zero(self):
        enemy_hero = Hero("Borko", 49, 50, 2)
        self.assertEqual("Draw", self.hero.battle(enemy_hero))

    def test_repr_hero(self):
        expect = f"Hero Bobby: 25 lvl\nHealth: 98\nDamage: 2\n"
        self.assertEqual(expect, self.hero.__str__())
Esempio n. 4
0
class TestHero(TestCase):
    username = '******'
    health = 100.00
    damage = 20.00
    level = 12

    enemy_username = '******'
    enemy_health = 240
    enemy_damage = 10.00
    enemy_level = 10

    def setUp(self):
        self.hero = Hero(self.username, self.level, self.health, self.damage)
        self.enemy = Hero(self.enemy_username, self.enemy_level, self.enemy_health, self.enemy_damage)

    def test_initialize_correct_values(self):
        self.assertEqual(self.username, self.hero.username)
        self.assertEqual(self.health, self.hero.health)
        self.assertEqual(self.damage, self.hero.damage)
        self.assertEqual(self.level, self.hero.level)

    def test_can_not_fight_yourself(self):
        with self.assertRaises(Exception):
            self.hero.battle(self.hero)

    def test_can_not_fight_when_hero_health_is_zero(self):
        self.hero.health = 0
        with self.assertRaises(ValueError):
            self.hero.battle(self.enemy)

        # self.assertEqual("Your health is lower than or equal to 0. You need to rest", str(ex.exception))

    def test_can_not_fight_when_enemy_health_is_zero(self):
        self.enemy.health = 0
        with self.assertRaises(ValueError):
            self.hero.battle(self.enemy)

        # self.assertEqual(f"You cannot fight {self.enemy_username}. He needs to rest", str(ex.exception))

    def test_hero_and_enemy_health_is_zero(self):
        self.assertEqual('Draw', self.hero.battle(self.enemy))

    def test_hero_wins_after_battle_and_values_increase(self):
        self.hero.health += 100

        self.assertEqual('You win', self.hero.battle(self.enemy))
        self.assertEqual(self.level + 1, self.hero.level)
        self.assertEqual(self.health + 5, self.hero.health)
        self.assertEqual(self.damage + 5, self.hero.damage)

        self.assertTrue(self.enemy.health <= 0)

    def test_enemy_wins_after_battle_and_values_increase(self):
        self.enemy.health += 240

        self.assertEqual('You lose', self.hero.battle(self.enemy))
        self.assertEqual(self.enemy_level + 1, self.enemy.level)
        self.assertEqual(self.enemy_health + 5, self.enemy.health)
        self.assertEqual(self.enemy_damage + 5, self.enemy.damage)

        self.assertTrue(self.hero.health <= 0)

    def test_hero_string_representation(self):
        self.assertEqual(f"Hero {self.username}: {self.level} lvl\nHealth: {self.health}\nDamage: {self.damage}\n",
                         self.hero.__str__())

    def test_enemy_string_representation(self):
        self.assertEqual(
            f"Hero {self.enemy_username}: {self.enemy_level} lvl\nHealth: {self.enemy_health}\nDamage: {self.enemy_damage}\n",
            self.enemy.__str__())
Esempio n. 5
0
class HeroTest(unittest.TestCase):
    def setUp(self):
        self.hero = Hero('Blue Mage', 10, 1000.1, 100.2)

    def test_hero_init_method_attributes(self):
        self.assertEqual('Blue Mage', self.hero.username)
        self.assertEqual(10, self.hero.level)
        self.assertEqual(1000.1, self.hero.health)
        self.assertEqual(100.2, self.hero.damage)

    def test_hero_str_method(self):
        expected_result = f"Hero Blue Mage: 10 lvl\nHealth: 1000.1\nDamage: 100.2\n"
        actual_result = self.hero.__str__()
        self.assertEqual(expected_result, actual_result)

    def test_hero_battle_when_enemy_hero_name_same_as_hero_name(self):
        enemy_hero = self.hero
        with self.assertRaises(Exception) as context:
            self.hero.battle(enemy_hero)
        self.assertEqual("You cannot fight yourself", str(context.exception))

    def test_hero_battle_when_hero_health_is_0(self):
        enemy_hero = Hero('Hero', 5, 100, 3)
        self.hero.health = 0
        with self.assertRaises(ValueError) as context:
            self.hero.battle(enemy_hero)
        self.assertEqual(
            "Your health is lower than or equal to 0. You need to rest",
            str(context.exception))

    def test_hero_battle_when_hero_health_is_less_than_0(self):
        enemy_hero = Hero('Hero', 5, 100, 3)
        self.hero.health = -5
        with self.assertRaises(ValueError) as context:
            self.hero.battle(enemy_hero)
        self.assertEqual(
            "Your health is lower than or equal to 0. You need to rest",
            str(context.exception))

    def test_hero_battle_when_enemy_hero_health_is_0(self):
        enemy_hero = Hero('Knight', 5, 0, 3)
        with self.assertRaises(ValueError) as context:
            self.hero.battle(enemy_hero)
        self.assertEqual("You cannot fight Knight. He needs to rest",
                         str(context.exception))

    def test_hero_battle_when_enemy_hero_health_is_less_than_0(self):
        enemy_hero = Hero('Knight', 5, -100, 3)
        with self.assertRaises(ValueError) as context:
            self.hero.battle(enemy_hero)
        self.assertEqual("You cannot fight Knight. He needs to rest",
                         str(context.exception))

    def test_hero_battle_when_battle_is_draw(self):
        enemy_hero = Hero('Knight', 10, 1000.1, 100.2)
        expected_result = "Draw"
        actual_result = self.hero.battle(enemy_hero)
        self.assertEqual(expected_result, actual_result)

    def test_hero_battle_when_hero_wins(self):
        enemy_hero = Hero('Knight', 5, 100, 3)
        expected_result = "You win"
        actual_result = self.hero.battle(enemy_hero)
        self.assertEqual(expected_result, actual_result)
        self.assertEqual(11, self.hero.level)
        self.assertEqual(990.1, self.hero.health)
        self.assertEqual(105.2, self.hero.damage)

    def test_hero_battle_when_enemy_hero_wins(self):
        enemy_hero = Hero('Knight', 11, 10000, 110)
        expected_result = "You lose"
        actual_result = self.hero.battle(enemy_hero)
        self.assertEqual(expected_result, actual_result)
        self.assertEqual(12, enemy_hero.level)
        self.assertEqual(9003, enemy_hero.health)
        self.assertEqual(115, enemy_hero.damage)
Esempio n. 6
0
class TestHero(TestCase):
    username = '******'
    health = 100
    damage = 5
    level = 5

    def setUp(self):
        self.hero = Hero(self.username, self.level, self.health, self.damage)

    def test_hero_init_method_attributes(self):
        self.assertEqual('MadMax', self.hero.username)
        self.assertEqual(5, self.hero.level)
        self.assertEqual(100, self.hero.health)
        self.assertEqual(5, self.hero.damage)

    def test_battle_exception_test(self):
        with self.assertRaises(Exception) as context:
            enemy_hero = self.hero
            self.hero.battle(enemy_hero)

        self.assertEqual('You cannot fight yourself', str(context.exception))

    def test_battle_exception_if_hero_lower_health(self):
        with self.assertRaises(Exception) as context:
            self.hero.health = 0
            enemy_hero = Hero('Hero', 5, 100, 3)
            self.hero.battle(enemy_hero)

        self.assertEqual(
            'Your health is lower than or equal to 0. You need to rest',
            str(context.exception))

    def test_battle_exception_if_enemy_hero_has_lower_health(self):
        with self.assertRaises(Exception) as context:
            enemy_hero = Hero('Enemy Hero Pesho', 5, 0, 3)
            self.hero.battle(enemy_hero)

        self.assertEqual(
            f'You cannot fight {enemy_hero.username}. He needs to rest',
            str(context.exception))

    def test_battle_results(self):
        enemy_hero = Hero('Enemy Hero Pesho', 5, 100, 3)
        self.hero.battle(enemy_hero)
        self.assertEqual(self.hero.health, 85)
        self.assertEqual(enemy_hero.health, 80)

    def test_you_win_if__healt_0(self):
        enemy_hero = Hero('Enemy Hero Pesho', 5, 10, 3)
        expected_message = 'You win'
        actual_message = self.hero.battle(enemy_hero)
        self.assertEqual(expected_message, actual_message)

    def test_you_loose_if_self_health_under_0(self):
        enemy_hero = Hero('Enemy Hero Pesho', 50, 110, 30)
        expected_message = 'You lose'
        actual_message = self.hero.battle(enemy_hero)
        self.assertEqual(expected_message, actual_message)

    def test__rerp_method(self):
        expected = f"Hero MadMax: 5 lvl\n" \
                   f"Health: 100\n" \
                   f"Damage: 5\n"
        actual_result = self.hero.__str__()

        self.assertEqual(expected, actual_result)

    def test_if_health_of_both_hero_is_0(self):
        enemy_hero = Hero('Enemy Hero Pesho', 50, 1, 30)
        expected_result = 'Draw'
        result = self.hero.battle(enemy_hero)
        self.assertEqual(result, expected_result)
Esempio n. 7
0
class HeroTest(unittest.TestCase):
    username = '******'
    level = 2
    health = 100.0
    damage = 10.0

    def setUp(self) -> None:
        self.hero = Hero(username=self.username,
                         level=self.level,
                         health=self.health,
                         damage=self.damage)

    def test_hero_init(self):
        self.assertEqual(self.username, self.hero.username)
        self.assertEqual(self.health, self.hero.health)
        self.assertEqual(self.damage, self.hero.damage)
        self.assertEqual(self.level, self.hero.level)

    def test_hero_string_representation(self):
        expected = f"Hero {self.username}: {self.level} lvl\n" \
                   f"Health: {self.health}\n" \
                   f"Damage: {self.damage}\n"
        actual = self.hero.__str__()
        self.assertEqual(expected, actual)

    def test_battle__when_self_fight__should_raise_exception(self):
        enemy = self.hero
        with self.assertRaises(Exception) as exc:
            self.hero.battle(enemy)
        msg = "You cannot fight yourself"
        self.assertEqual(msg, str(exc.exception))

    def test_battle__when_hero_health_is_0__should_raise_value_error(self):
        enemy = Hero('enemy', 1, 100.0, 10.0)
        self.hero.health = 0
        with self.assertRaises(ValueError) as exc:
            self.hero.battle(enemy)
        msg = "Your health is lower than or equal to 0. You need to rest"
        self.assertEqual(msg, str(exc.exception))

    def test_battle__when_hero_health_is_negative__should_raise_value_error(
            self):
        enemy = Hero('enemy', 1, 100.0, 10.0)
        self.hero.health = -1
        with self.assertRaises(ValueError) as exc:
            self.hero.battle(enemy)
        msg = "Your health is lower than or equal to 0. You need to rest"
        self.assertEqual(msg, str(exc.exception))

    def test_battle__when_enemy_health_is_0__should_raise_value_error(self):
        enemy = Hero('enemy', 1, 0.0, 10.0)
        with self.assertRaises(ValueError) as exc:
            self.hero.battle(enemy)
        msg = f"You cannot fight {enemy.username}. He needs to rest"
        self.assertEqual(msg, str(exc.exception))

    def test_battle__when_enemy_health_is_negative__should_raise_value_error(
            self):
        enemy = Hero('enemy', 1, -1.0, 10.0)
        with self.assertRaises(ValueError) as exc:
            self.hero.battle(enemy)
        msg = f"You cannot fight {enemy.username}. He needs to rest"
        self.assertEqual(msg, str(exc.exception))

    def test_battle__hero_health_is_reduced_by_enemy_dmg(self):
        enemy = Hero(username='******', level=2, health=100.0, damage=10.0)
        self.hero.battle(enemy)
        self.assertEqual(80.0, self.hero.health)

    def test_battle__enemy_health_is_reduced_by_hero_dmg(self):
        enemy = Hero(username='******', level=2, health=100.0, damage=10.0)
        self.hero.battle(enemy)
        self.assertEqual(85.0, enemy.health)

    def test_battle__when_health_is_negative__should_return_draw(self):
        self.hero.damage = 100
        enemy = Hero(username='******', level=2, health=100.0, damage=100.0)
        expected = 'Draw'
        actual = self.hero.battle(enemy)
        self.assertEqual(expected, actual)

    def test_battle__when_health_is_0__should_return_draw(self):
        self.hero.damage = 50
        enemy = Hero(username='******', level=2, health=100.0, damage=50.0)
        expected = 'Draw'
        actual = self.hero.battle(enemy)
        self.assertEqual(expected, actual)

    def test_battle__when_hero_health_is_less_than_enemy__should_return_lose(
            self):
        enemy = Hero(username='******', level=2, health=100.0, damage=50.0)
        expected = 'You lose'
        actual = self.hero.battle(enemy)
        self.assertEqual(expected, actual)

    def test_battle__when_enemy_health_is_0__should_return_win(self):
        enemy = Hero(username='******', level=1, health=20.0, damage=10.0)
        expected = 'You win'
        actual = self.hero.battle(enemy)
        self.assertEqual(expected, actual)

    def test_battle__when_enemy_health_is_negative__should_return_win(self):
        enemy = Hero(username='******', level=1, health=10.0, damage=10.0)
        expected = 'You win'
        actual = self.hero.battle(enemy)
        self.assertEqual(expected, actual)

    def test_battle__when_win__should_increase_hero_stats(self):
        enemy = Hero(username='******', level=1, health=10.0, damage=0.0)
        self.hero.battle(enemy)
        self.assertEqual(3, self.hero.level)
        self.assertEqual(105.0, self.hero.health)
        self.assertEqual(15.0, self.hero.damage)

    def test_battle__when_lose__should_increase_enemy_stats(self):
        enemy = Hero(username='******', level=10, health=100.0, damage=100.0)
        self.hero.battle(enemy)
        self.assertEqual(11, enemy.level)
        self.assertEqual(85.0, enemy.health)
        self.assertEqual(105.0, enemy.damage)
Esempio n. 8
0
class TestHero(unittest.TestCase):
    def setUp(self):
        self.my_instance_hero = Hero('username', 1, 100, 20)
        self.another_hero = Hero('name', 10, 20, 30)

    def test__init__hero(self):
        self.assertEqual(self.my_instance_hero.username, 'username')
        self.assertEqual(self.my_instance_hero.level, 1)
        self.assertEqual(self.my_instance_hero.damage, 20)
        self.assertEqual(self.my_instance_hero.health, 100)

    """
    test battle function cases
    """

    def test_both_objects_with_same_name__expected_exception(self):
        self.my_instance_hero.username = '******'
        with self.assertRaises(Exception) as ex:
            self.my_instance_hero.battle(self.another_hero)
        self.assertEqual("You cannot fight yourself", str(ex.exception))

    def test_instance_hero_health_less_than__zero__expected_value_error(self):
        with self.assertRaises(ValueError) as ex:
            self.my_instance_hero.health = -5
            self.my_instance_hero.battle(self.another_hero)
        self.assertEqual('Your health is lower than or equal to 0. You need to rest', str(ex.exception))
        self.assertEqual(self.my_instance_hero.health, -5)

    def test_instance_hero_health_equal_to_zero__expected_value_error(self):
        with self.assertRaises(ValueError) as ex:
            self.my_instance_hero.health = 0
            self.my_instance_hero.battle(self.another_hero)
        self.assertEqual('Your health is lower than or equal to 0. You need to rest', str(ex.exception))
        self.assertEqual(self.my_instance_hero.health, 0)

    def test_another_hero_health_equal_to_zero_expected_value_error(self):
        with self.assertRaises(ValueError) as ex:
            self.another_hero.health = -5
            self.my_instance_hero.battle(self.another_hero)
        self.assertEqual(f"You cannot fight name. He needs to rest", str(ex.exception))
        self.assertEqual(self.another_hero.health, -5)

    def test_another_hero_object_health_less_than_zero__expected_value_error(self):
        with self.assertRaises(ValueError) as ex:
            self.another_hero.health = 0
            self.my_instance_hero.battle(self.another_hero)
        self.assertEqual(f"You cannot fight name. He needs to rest", str(ex.exception))
        self.assertEqual(self.another_hero.health, 0)

    def test_both_heroes_under_or_equal_to_zero_expected_draw(self):
        result = self.my_instance_hero.battle(self.another_hero)
        self.assertEqual(result, 'Draw')
        self.assertTrue(self.my_instance_hero.health <= 0 and self.another_hero.health <= 0)

    def test_instance_hero_win(self):
        self.another_hero.damage = 1
        result = self.my_instance_hero.battle(self.another_hero)
        self.assertEqual(result, 'You win')
        self.assertEqual(self.my_instance_hero.health, 95)
        self.assertEqual(self.my_instance_hero.damage, 25)
        self.assertEqual(self.my_instance_hero.level, 2)

    def test_instance_hero_lose(self):
        self.another_hero.health = 1000
        result = self.my_instance_hero.battle(self.another_hero)
        self.assertEqual(result, 'You lose')
        self.assertEqual(self.another_hero.health, 985)
        self.assertEqual(self.another_hero.damage, 35)
        self.assertEqual(self.another_hero.level, 11)

    def test_str_method(self):
        massive = self.my_instance_hero.__str__().split('\n')
        self.assertEqual(massive[0], f"Hero username: 1 lvl")
        self.assertEqual(massive[1], f"Health: 100")
        self.assertEqual(massive[2], f"Damage: 20")
Esempio n. 9
0
class HeroTests(unittest.TestCase):
    def setUp(self):
        self.hero = Hero(username='******', level=80, health=12.5, damage=1.0)
        self.enemy = Hero(username='******', level=10, health=2, damage=1.0)

    def test_hero_if_all_attributes_are_set(self):
        self.assertEqual('Bogdan', self.hero.username)
        self.assertEqual(80, self.hero.level)
        self.assertEqual(12.5, self.hero.health)
        self.assertEqual(1.0, self.hero.damage)

    def test__hero__battle_if_name_equals_username_raise_exception(self):
        with self.assertRaises(Exception) as ex:
            self.hero.battle(self.hero)
        self.assertEqual("You cannot fight yourself", str(ex.exception))

    def test_hero__battle_if_hero_health_is_equal_or_less_than_zero_raise_error(
            self):
        self.hero.health = 0
        with self.assertRaises(Exception) as ex:
            self.hero.battle(self.enemy)
        self.assertEqual(
            "Your health is lower than or equal to 0. You need to rest",
            str(ex.exception))

    def test_hero__battle_if_enemy_health_is_equal_or_less_than_zero_raise_error(
            self):
        self.enemy.health = -1
        with self.assertRaises(Exception) as ex:
            self.hero.battle(self.enemy)
        self.assertEqual("You cannot fight Vicky. He needs to rest",
                         str(ex.exception))

    def test_hero_battle__if_both_players_health_is_equal_or_less_than_zero_draw(
            self):
        self.hero.health = 0.5
        self.enemy.health = 0.5
        result = self.hero.battle(self.enemy)
        expected_result = 'Draw'
        self.assertEqual(expected_result, result)

    def test_hero_battle__if_enemy_health_equal_or_less_than_zero_hero_wins(
            self):
        self.hero.health = 100.5
        result = self.hero.battle(self.enemy)
        expected_result = 'You win'
        self.assertEqual(expected_result, result)

    def test_hero_battle__if_hero_health_equal_or_less_than_zero_hero_loose(
            self):
        self.hero.health = 12.5
        self.hero.damage = 0
        result = self.hero.battle(self.enemy)
        expected_result = 'You lose'
        self.assertEqual(expected_result, result)
        self.assertEqual(11, self.enemy.level)
        self.assertEqual(7, self.enemy.health)
        self.assertEqual(6.0, self.enemy.damage)

    def test_hero_printing_the_summary_of_the_class(self):
        self.hero.battle(self.enemy)
        result = self.hero.__str__()
        expected_result = f"Hero Bogdan: 81 lvl\n" \
                          f"Health: 7.5\n" \
                          f"Damage: 6.0\n"
        self.assertEqual(expected_result, result)