def test_str_with_magic_dmg_phys_absorbed(self): expected_magic = 10.2 expected_phys_absorbed = 5.5 dmg = Damage(magic_dmg=10.199) dmg.phys_absorbed = expected_phys_absorbed expected_str = f'0.00 physical damage ({expected_phys_absorbed:.2f} absorbed) and {expected_magic:.2f} magical damage' self.assertEqual(str(dmg), expected_str)
def test_str_only_phys_dmg_with_absorbed(self): expected_phys = 10.10 expected_absorbed = 10 dmg = Damage(phys_dmg=10.111) dmg.phys_absorbed = expected_absorbed expected_str = f'{expected_phys:.2f} physical damage ({expected_absorbed:.2f} absorbed)' self.assertEqual(str(dmg), expected_str)
def test_str_with_phys_and_magic_phys_absorb(self): expected_phys = 10.2 expected_magic = 10.10 expected_phys_absorbed = 5.5 dmg = Damage(phys_dmg=10.199, magic_dmg=10.111) dmg.phys_absorbed = expected_phys_absorbed expected_str = f'{expected_phys:.2f} physical damage ({expected_phys_absorbed:.2f} absorbed) and {expected_magic:.2f} magical damage' self.assertEqual(str(dmg), expected_str)
def test_str_with_absorbed_only(self): expected_magic_absorbed = 5.5 expected_phys_absorbed = 5.4 dmg = Damage() dmg.magic_absorbed = expected_magic_absorbed dmg.phys_absorbed = expected_phys_absorbed expected_str = f'0.00 physical damage ({expected_phys_absorbed:.2f} absorbed) and 0.00 magical damage ({expected_magic_absorbed:.2f} absorbed)' self.assertEqual(str(dmg), expected_str)
def test_handle_absorption_bigger_than_magic(self): absorption_shield = 7 dmg = Damage(phys_dmg=10, magic_dmg=6) dmg.handle_absorption(absorption_shield) expected_dmg = Damage(phys_dmg=9, magic_dmg=0) expected_dmg.magic_absorbed = 6 expected_dmg.phys_absorbed = 1 self.assertEqual(dmg, expected_dmg)
def test_eq(self): """ Two Damage classes should be equal if their magic/phys dmg and absorbed are equal""" dmg_1 = Damage(1, 1) dmg_2 = Damage(1, 1) self.assertEqual(dmg_1, dmg_2) dmg_1.phys_absorbed += 0.1 self.assertNotEqual(dmg_1, dmg_2) dmg_1.phys_absorbed = dmg_2.phys_absorbed self.assertEqual(dmg_1, dmg_2) dmg_1.magic_dmg += 1 self.assertNotEqual(dmg_1, dmg_2)
def test_handle_absorption_bigger_than_both_dmg(self): absorption_shield = 17 dmg = Damage(phys_dmg=10, magic_dmg=6) left_shield = dmg.handle_absorption(absorption_shield) expected_dmg = Damage(phys_dmg=0, magic_dmg=0) expected_dmg.magic_absorbed = 6 expected_dmg.phys_absorbed = 10 expected_shield = 1 self.assertEqual(dmg, expected_dmg) self.assertEqual(left_shield, expected_shield)