Пример #1
0
    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)
Пример #2
0
    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))
Пример #3
0
    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))
Пример #4
0
    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))
Пример #5
0
    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)
Пример #6
0
    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)
Пример #7
0
    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)
Пример #8
0
    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)
Пример #9
0
    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)
Пример #10
0
    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)
Пример #11
0
    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))
Пример #12
0
    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)
Пример #13
0
    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)
Пример #14
0
    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)
Пример #15
0
    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)
Пример #16
0
    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)
Пример #17
0
    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)
Пример #18
0
    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)