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")
def test_battle_helth_is_less_thjen_zero(self): hero_test_with_zero = Hero('ZeroName', 1, 0, 100) with self.assertRaises(ValueError) as ex: hero_test_with_zero.battle(self.user3) self.assertEqual( str(ex.exception), "Your health is lower than or equal to 0. You need to rest")
class TestHero(unittest.TestCase): def setUp(self): self.hero = Hero('Hero1', 2, 100, 50) self.user2 = Hero('Hero1', 2, 100, 50) self.user3 = Hero('Hero2', 2, 100, 50) self.user4 = Hero('Lost', 2, 100, 40) def test_all_set_up(self): self.assertEqual(self.hero.username, 'Hero1') self.assertEqual(self.hero.level, 2) self.assertEqual(self.hero.health, 100) self.assertEqual(self.hero.damage, 50) def test_battle_with_same_name_raise_exception(self): with self.assertRaises(Exception) as ex: self.hero.battle(self.user2) self.assertEqual(str(ex.exception), "You cannot fight yourself") def test_battle_helth_is_less_thjen_zero(self): hero_test_with_zero = Hero('ZeroName', 1, 0, 100) with self.assertRaises(ValueError) as ex: hero_test_with_zero.battle(self.user3) self.assertEqual( str(ex.exception), "Your health is lower than or equal to 0. You need to rest") def test_battle_intruder_has_zero_health(self): hero_test_with_zero = Hero('ZeroName', 1, 10, 100) intruder_hero = Hero('ZeroName2', 1, 0, 100) with self.assertRaises(ValueError) as ex: hero_test_with_zero.battle((intruder_hero)) self.assertEqual( str(ex.exception), f"You cannot fight {intruder_hero.username}. He needs to rest") def test_hero_and_intruder_has_less_then_zero(self): acquire = self.hero.battle(self.user3) self.assertEqual(acquire, 'Draw') def test_enemy_health_is_zero_after_battle(self): acquire = self.hero.battle(self.user4) self.assertEqual(acquire, 'You win') self.assertEqual(self.hero.level, 3) self.assertEqual(self.hero.health, 25) self.assertEqual(self.hero.damage, 55) def test_hero_health_is_zero_after_battle(self): acquire = self.user4.battle(self.hero) self.assertEqual(acquire, 'You lose') self.assertEqual(self.hero.level, 3) self.assertEqual(self.hero.health, 25) self.assertEqual(self.hero.damage, 55) def test_represent_method(self): acquire = f"Hero {self.hero.username}: {self.hero.level} lvl\n" \ f"Health: {self.hero.health}\n" \ f"Damage: {self.hero.damage}\n" self.assertEqual(str(self.hero), acquire)
def test_if_enemy_hero_health_drops_to_zero_or_under_zero_and_we_win_the_battle(self): self.hero = Hero('Miro', 100, 850, 5) self.enemy_hero = Hero('Prodigy', 90, 330, 5) result = Hero.battle(self.hero, self.enemy_hero) self.assertEqual(self.hero.level, 101) self.assertEqual(self.hero.health, 405) self.assertEqual(self.hero.damage, 10) self.assertEqual(result, 'You win')
def test_if_enemy_health_is_above_zero_after_battle_and_hero_loses_the_battle(self): self.hero = Hero('Miro', 100, 850, 5) self.enemy_hero = Hero('Prodigy', 90, 830, 5) result = Hero.battle(self.hero, self.enemy_hero) self.assertEqual(self.enemy_hero.level, 91) self.assertEqual(self.enemy_hero.health, 335) self.assertEqual(self.enemy_hero.damage, 10) self.assertEqual(result, "You lose")
def test_battle_intruder_has_zero_health(self): hero_test_with_zero = Hero('ZeroName', 1, 10, 100) intruder_hero = Hero('ZeroName2', 1, 0, 100) with self.assertRaises(ValueError) as ex: hero_test_with_zero.battle((intruder_hero)) self.assertEqual( str(ex.exception), f"You cannot fight {intruder_hero.username}. He needs to rest")
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)
def test_both_enemies_fight_with_the_same_name_raises_exception(self): self.hero = Hero('Miro', 100, 850, 5) self.enemy_hero = Hero('Prodigy', 90, 830, 5) self.enemy_hero.username = self.hero.username if check_if_both_names_are_the_same(self.hero.username, self.enemy_hero.username): with self.assertRaises(Exception): Hero.battle(self.hero, self.enemy_hero)
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__())
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_hero_health__when_hero_health_goes_to_zero_after_battle__return_msg( self): enemy = Hero("Enemy", 2, 9, 2) self.hero.health = 4 expected_msg = "Draw" actual_msg = f"{self.hero.battle(enemy)}" self.assertEqual(expected_msg, actual_msg)
def test_hero_health_in_battle__if_below__expect_ValueError(self): enemy = Hero("Enemy", 99, 100, 999) self.hero.health = -1 with self.assertRaises(ValueError) as context: self.hero.battle(enemy) expected = "Your health is lower than or equal to 0. You need to rest" self.assertEqual(expected, str(context.exception))
def test_hero_enemy_name__when_enemy_name_is_same_as_hero_name_expect_exception( self): enemy = Hero("TestName", 99, 100, 999) with self.assertRaises(Exception) as context: self.hero.battle(enemy) expected = "You cannot fight yourself" self.assertEqual(expected, str(context.exception))
def test_hero_battle__when_hero_health_drop_to_zero_after_battle__return_msg( self): enemy = Hero("Enemy", 2, 100, 2) self.hero.health = 4 expected_msg = "You lose" actual_msg = f"{self.hero.battle(enemy)}" self.assertEqual(expected_msg, actual_msg)
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_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_battle_only_enemy_health_is_zero(self): hero2 = Hero("Manol", 5, 50, 10) result = self.hero1.battle(hero2) self.assertEqual(6, self.hero1.level) self.assertEqual(55, self.hero1.health) self.assertEqual(15, self.hero1.damage) self.assertEqual("You win", result)
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_health_equal_to_zero_raises_value_error(self): self.hero1.health = 0 hero2 = Hero("Manol", 5, 100, 10) with self.assertRaises(ValueError) as ex: self.hero1.battle(hero2) self.assertEqual( "Your health is lower than or equal to 0. You need to rest", str(ex.exception))
def test_battle_only_your_health_is_zero(self): self.hero1.health = 50 hero2 = Hero("Manol", 5, 200, 10) result = self.hero1.battle(hero2) self.assertEqual(6, hero2.level) self.assertEqual(155, hero2.health) self.assertEqual(15, hero2.damage) self.assertEqual("You lose", result)
def test_hero_battle_enemy_win(self): h = Hero('Test1', 23, 100, 200) rv = self.hero.battle(h) self.assertTrue(self.hero.health <= 0) self.assertEqual('You lose', rv) self.assertEqual(24, h.level) self.assertEqual(205, h.damage) self.assertEqual(95, h.health)
def test_hero_battle_hero_win(self): h = Hero('Test1', 2, 10, 2) rv = self.hero.battle(h) self.assertTrue(h.health <= 0) self.assertEqual('You win', rv) self.assertEqual(2, self.hero.level) self.assertEqual(15, self.hero.damage) self.assertEqual(101, self.hero.health)
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_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)
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_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_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))
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__())
from project.elf import Elf from project.hero import Hero hero = Hero("H", 4) print(hero.username) print(hero.level) print(str(hero)) elf = Elf("E", 4) print(str(elf)) print(elf.__class__.__bases__[0].__name__) print(elf.username) print(elf.level)
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)