def test_killed_on_block(self): actor_1, actor_2 = self.get_actors() self.assertFalse(actor_1.keep_dead_companion()) self.set_hero_companion() self.assertTrue(actor_1.has_companion) self.assertFalse(actor_2.has_companion) with mock.patch( 'the_tale.game.heroes.objects.Hero.reset_accessors_cache' ) as reset_accessors_cache: with self.check_calls_count( 'the_tale.game.heroes.tt_api.push_message_to_diary', 1): while self.hero.companion: self.assertTrue( battle.try_companion_block(attacker=actor_2, defender=actor_1, messenger=self.hero)) self.assertEqual(self.hero.companion, None) self.assertFalse(actor_1.has_companion) self.assertTrue( self.hero.journal.messages[-1].key.is_COMPANIONS_KILLED) self.assertEqual(reset_accessors_cache.call_count, 1)
def test_no_companion(self): actor_1, actor_2 = self.get_actors() self.assertFalse(actor_1.has_companion) self.assertFalse(actor_2.has_companion) self.assertFalse(battle.try_companion_block(attacker=actor_2, defender=actor_1, messenger=self.hero))
def test_not_defend(self): actor_1, actor_2 = self.get_actors() self.set_hero_companion() self.assertTrue(actor_1.has_companion) self.assertFalse(actor_2.has_companion) with self.check_not_changed(self.hero.diary.__len__): with self.check_not_changed(self.hero.journal.__len__): with self.check_not_changed(lambda: self.hero.companion.health): self.assertFalse(battle.try_companion_block(attacker=actor_2, defender=actor_1, messenger=self.hero))
def test_not_defend(self): actor_1, actor_2 = self.get_actors() self.set_hero_companion() self.assertTrue(actor_1.has_companion) self.assertFalse(actor_2.has_companion) with self.check_calls_count('the_tale.game.heroes.logic.push_message_to_diary', 0): with self.check_not_changed(self.hero.journal.__len__): with self.check_not_changed(lambda: self.hero.companion.health): self.assertFalse(battle.try_companion_block(attacker=actor_2, defender=actor_1, messenger=self.hero))
def test_success_block(self): actor_1, actor_2 = self.get_actors() self.set_hero_companion() self.assertTrue(actor_1.has_companion) self.assertFalse(actor_2.has_companion) with self.check_not_changed(self.hero.diary.__len__): with self.check_delta(self.hero.messages.__len__, 1): with self.check_not_changed(lambda: self.hero.companion.health): self.assertTrue(battle.try_companion_block(attacker=actor_2, defender=actor_1, messanger=self.hero)) self.assertTrue(self.hero.messages.messages[-1].key.is_COMPANIONS_BLOCK)
def test_wounded_on_block(self): actor_1, actor_2 = self.get_actors() self.set_hero_companion() self.assertTrue(actor_1.has_companion) self.assertFalse(actor_2.has_companion) with self.check_calls_count('the_tale.game.heroes.logic.push_message_to_diary', 0): with self.check_delta(self.hero.journal.__len__, 1): with self.check_delta(lambda: self.hero.companion.health, -c.COMPANIONS_DAMAGE_PER_WOUND): self.assertTrue(battle.try_companion_block(attacker=actor_2, defender=actor_1, messenger=self.hero)) self.assertTrue(self.hero.journal.messages[-1].key.is_COMPANIONS_WOUND)
def test_wounded_on_block(self): actor_1, actor_2 = self.get_actors() self.set_hero_companion() self.assertTrue(actor_1.has_companion) self.assertFalse(actor_2.has_companion) with self.check_not_changed(self.hero.diary.__len__): with self.check_delta(self.hero.journal.__len__, 1): with self.check_delta(lambda: self.hero.companion.health, -c.COMPANIONS_DAMAGE_PER_WOUND): self.assertTrue(battle.try_companion_block(attacker=actor_2, defender=actor_1, messenger=self.hero)) self.assertTrue(self.hero.journal.messages[-1].key.is_COMPANIONS_WOUND)
def test_success_block(self): actor_1, actor_2 = self.get_actors() self.set_hero_companion() self.assertTrue(actor_1.has_companion) self.assertFalse(actor_2.has_companion) with self.check_not_changed(self.hero.diary.__len__): with self.check_delta(self.hero.messages.__len__, 1): with self.check_not_changed(lambda: self.hero.companion.health): self.assertTrue(battle.try_companion_block(attacker=actor_2, defender=actor_1, messenger=self.hero)) self.assertTrue(self.hero.messages.messages[-1].key.is_COMPANIONS_BLOCK)
def test_killed_on_block(self): actor_1, actor_2 = self.get_actors() self.set_hero_companion() self.assertTrue(actor_1.has_companion) self.assertFalse(actor_2.has_companion) with self.check_delta(self.hero.diary.__len__, 1): while self.hero.companion: self.assertTrue(battle.try_companion_block(attacker=actor_2, defender=actor_1, messenger=self.hero)) self.assertEqual(self.hero.companion, None) self.assertFalse(actor_1.has_companion) self.assertTrue(self.hero.journal.messages[-1].key.is_COMPANIONS_KILLED)
def test_killed_on_block(self): actor_1, actor_2 = self.get_actors() self.set_hero_companion() self.assertTrue(actor_1.has_companion) self.assertFalse(actor_2.has_companion) with self.check_calls_count('the_tale.game.heroes.logic.push_message_to_diary', 1): while self.hero.companion: self.assertTrue(battle.try_companion_block(attacker=actor_2, defender=actor_1, messenger=self.hero)) self.assertEqual(self.hero.companion, None) self.assertFalse(actor_1.has_companion) self.assertTrue(self.hero.journal.messages[-1].key.is_COMPANIONS_KILLED)
def test_not_defend(self): actor_1, actor_2 = self.get_actors() self.set_hero_companion() self.assertTrue(actor_1.has_companion) self.assertFalse(actor_2.has_companion) with self.check_calls_count( 'the_tale.game.heroes.logic.push_message_to_diary', 0): with self.check_not_changed(self.hero.journal.__len__): with self.check_not_changed( lambda: self.hero.companion.health): self.assertFalse( battle.try_companion_block(attacker=actor_2, defender=actor_1, messenger=self.hero))
def test_killed_on_block__has_spare_parts(self): actor_1, actor_2 = self.get_actors() self.set_hero_companion() self.assertTrue(actor_1.has_companion) self.assertFalse(actor_2.has_companion) with self.check_increased(lambda: self.hero.money), \ self.check_increased(lambda: self.hero.statistics.money_earned_from_companions), \ self.check_calls_count('the_tale.game.heroes.logic.push_message_to_diary', 2): while self.hero.companion: self.assertTrue(battle.try_companion_block(attacker=actor_2, defender=actor_1, messenger=self.hero)) self.assertEqual(self.hero.companion, None) self.assertFalse(actor_1.has_companion) self.assertTrue(self.hero.journal.messages[-1].key.is_COMPANIONS_BROKE_TO_SPARE_PARTS)
def test_killed_on_block__has_spare_parts(self): actor_1, actor_2 = self.get_actors() self.set_hero_companion() self.assertTrue(actor_1.has_companion) self.assertFalse(actor_2.has_companion) with contextlib.nested( self.check_increased(lambda: self.hero.money), self.check_increased(lambda: self.hero.statistics.money_earned_from_companions), self.check_delta(self.hero.diary.__len__, 2)): while self.hero.companion: self.assertTrue(battle.try_companion_block(attacker=actor_2, defender=actor_1, messenger=self.hero)) self.assertEqual(self.hero.companion, None) self.assertFalse(actor_1.has_companion) self.assertTrue(self.hero.journal.messages[-1].key.is_COMPANIONS_BROKE_TO_SPARE_PARTS)
def test_success_block(self): actor_1, actor_2 = self.get_actors() self.set_hero_companion() self.assertTrue(actor_1.has_companion) self.assertFalse(actor_2.has_companion) with self.check_calls_count( 'the_tale.game.heroes.tt_api.push_message_to_diary', 0): with self.check_delta(self.hero.journal.__len__, 1): with self.check_not_changed( lambda: self.hero.companion.health): self.assertTrue( battle.try_companion_block(attacker=actor_2, defender=actor_1, messenger=self.hero)) self.assertTrue(self.hero.journal.messages[-1].key.is_COMPANIONS_BLOCK)
def test_wounded_on_block(self): actor_1, actor_2 = self.get_actors() self.set_hero_companion() self.assertTrue(actor_1.has_companion) self.assertFalse(actor_2.has_companion) with self.check_calls_count( 'the_tale.game.heroes.logic.push_message_to_diary', 0): with self.check_delta(self.hero.journal.__len__, 1): with self.check_delta(lambda: self.hero.companion.health, -c.COMPANIONS_DAMAGE_PER_WOUND): self.assertTrue( battle.try_companion_block(attacker=actor_2, defender=actor_1, messenger=self.hero)) self.assertTrue(self.hero.journal.messages[-1].key.is_COMPANIONS_WOUND)
def test_killed_on_block(self): actor_1, actor_2 = self.get_actors() self.set_hero_companion() self.assertTrue(actor_1.has_companion) self.assertFalse(actor_2.has_companion) with self.check_calls_count( 'the_tale.game.heroes.logic.push_message_to_diary', 1): while self.hero.companion: self.assertTrue( battle.try_companion_block(attacker=actor_2, defender=actor_1, messenger=self.hero)) self.assertEqual(self.hero.companion, None) self.assertFalse(actor_1.has_companion) self.assertTrue( self.hero.journal.messages[-1].key.is_COMPANIONS_KILLED)
def test_killed_on_block__keep_companion(self): actor_1, actor_2 = self.get_actors() self.assertTrue(actor_1.keep_dead_companion()) self.set_hero_companion() self.assertTrue(actor_1.has_companion) self.assertFalse(actor_2.has_companion) with mock.patch( 'the_tale.game.heroes.objects.Hero.reset_accessors_cache' ) as reset_accessors_cache: while not self.hero.companion.is_dead: self.assertTrue( battle.try_companion_block(attacker=actor_2, defender=actor_1, messenger=self.hero)) self.assertNotEqual(self.hero.companion, None) self.assertTrue(self.hero.companion.is_dead) self.assertEqual(reset_accessors_cache.call_count, 1)
def test_killed_on_block__has_spare_parts(self): actor_1, actor_2 = self.get_actors() self.set_hero_companion() self.assertTrue(actor_1.has_companion) self.assertFalse(actor_2.has_companion) with self.check_increased(lambda: self.hero.money), \ self.check_increased(lambda: self.hero.statistics.money_earned_from_companions), \ self.check_calls_count('the_tale.game.heroes.logic.push_message_to_diary', 2): while self.hero.companion: self.assertTrue( battle.try_companion_block(attacker=actor_2, defender=actor_1, messenger=self.hero)) self.assertEqual(self.hero.companion, None) self.assertFalse(actor_1.has_companion) self.assertTrue(self.hero.journal.messages[-1].key. is_COMPANIONS_BROKE_TO_SPARE_PARTS)