Ejemplo n.º 1
0
    def test_process_request_quest__query(self):
        old_hero_1_info = logic.create_hero_info(self.hero_1)

        self.hero_1._model.level = 666

        new_hero_1_info = logic.create_hero_info(self.hero_1)

        hero_2_info = logic.create_hero_info(self.hero_2)

        self.assertNotEqual(old_hero_1_info, new_hero_1_info)

        self.worker.process_request_quest(self.hero_1.account_id, old_hero_1_info.serialize())
        self.worker.process_request_quest(self.hero_2.account_id, hero_2_info.serialize())
        self.worker.process_request_quest(self.hero_1.account_id, new_hero_1_info.serialize())

        self.assertEqual(self.worker.requests_query, collections.deque([self.account_1.id, self.account_2.id]))
        self.assertEqual(self.worker.requests_heroes_infos, {self.account_1.id: new_hero_1_info, self.account_2.id: hero_2_info})

        with mock.patch('the_tale.game.workers.supervisor.Worker.cmd_setup_quest') as cmd_setup_quest:
            self.worker.generate_quest()

        self.assertEqual(cmd_setup_quest.call_args_list[0][0][0], self.account_1.id)

        self.assertEqual(self.worker.requests_query, collections.deque([self.account_2.id]))
        self.assertEqual(self.worker.requests_heroes_infos, {self.account_2.id: hero_2_info})

        with mock.patch('the_tale.game.workers.supervisor.Worker.cmd_setup_quest') as cmd_setup_quest:
            self.worker.generate_quest()

        self.assertEqual(cmd_setup_quest.call_args_list[0][0][0], self.account_2.id)

        self.assertEqual(self.worker.requests_query, collections.deque())
        self.assertEqual(self.worker.requests_heroes_infos, {})
Ejemplo n.º 2
0
    def test_process_request_quest__query(self):
        old_hero_1_info = logic.create_hero_info(self.hero_1)

        self.hero_1.level = 666

        new_hero_1_info = logic.create_hero_info(self.hero_1)

        hero_2_info = logic.create_hero_info(self.hero_2)

        self.assertNotEqual(old_hero_1_info, new_hero_1_info)

        self.worker.process_request_quest(self.hero_1.account_id, old_hero_1_info.serialize())
        self.worker.process_request_quest(self.hero_2.account_id, hero_2_info.serialize())
        self.worker.process_request_quest(self.hero_1.account_id, new_hero_1_info.serialize())

        self.assertEqual(self.worker.requests_query, collections.deque([self.account_1.id, self.account_2.id]))
        self.assertEqual(self.worker.requests_heroes_infos, {self.account_1.id: new_hero_1_info, self.account_2.id: hero_2_info})

        with mock.patch('the_tale.game.workers.supervisor.Worker.cmd_setup_quest') as cmd_setup_quest:
            self.worker.generate_quest()

        self.assertEqual(cmd_setup_quest.call_args_list[0][0][0], self.account_1.id)

        self.assertEqual(self.worker.requests_query, collections.deque([self.account_2.id]))
        self.assertEqual(self.worker.requests_heroes_infos, {self.account_2.id: hero_2_info})

        with mock.patch('the_tale.game.workers.supervisor.Worker.cmd_setup_quest') as cmd_setup_quest:
            self.worker.generate_quest()

        self.assertEqual(cmd_setup_quest.call_args_list[0][0][0], self.account_2.id)

        self.assertEqual(self.worker.requests_query, collections.deque())
        self.assertEqual(self.worker.requests_heroes_infos, {})
Ejemplo n.º 3
0
    def test_process_request_quest(self):
        with mock.patch('the_tale.game.workers.supervisor.Worker.cmd_setup_quest') as cmd_setup_quest:
            self.worker.process_request_quest(self.hero_1.account_id, logic.create_hero_info(self.hero_1).serialize())
            self.worker.generate_quest()

        self.assertEqual(cmd_setup_quest.call_count, 1)

        self.assertEqual(cmd_setup_quest.call_args_list[0][0][0], self.hero_1.account_id)
        self.assertTrue(questgen_knowlege_base.KnowledgeBase.deserialize(cmd_setup_quest.call_args_list[0][0][1], fact_classes=questgen_facts.FACTS))
Ejemplo n.º 4
0
    def test_process_request_quest(self):
        with mock.patch('the_tale.game.workers.supervisor.Worker.cmd_setup_quest') as cmd_setup_quest:
            self.worker.process_request_quest(self.hero_1.account_id, logic.create_hero_info(self.hero_1).serialize())
            self.worker.generate_quest()

        self.assertEqual(cmd_setup_quest.call_count, 1)

        self.assertEqual(cmd_setup_quest.call_args_list[0][0][0], self.hero_1.account_id)
        self.assertTrue(questgen_knowlege_base.KnowledgeBase.deserialize(cmd_setup_quest.call_args_list[0][0][1], fact_classes=questgen_facts.FACTS))
Ejemplo n.º 5
0
    def test_create_hero_info__all_properties(self):
        self.hero.level = 11

        self.hero.position.set_place(self.place_1)

        mob = mobs_storage.all()[0]
        self.hero.preferences.set_mob(mob)

        place = self.place_1
        self.hero.preferences.set_place(place)

        friend = self.place_2.persons[0]
        self.hero.preferences.set_friend(friend)

        enemy = self.place_2.persons[1]
        self.hero.preferences.set_enemy(enemy)

        self.hero.preferences.set_equipment_slot(EQUIPMENT_SLOT.HELMET)

        interfered_person = self.place_3.persons[0]

        self.hero.quests.add_interfered_person(interfered_person.id)

        is_first_quest_path_required = random.choice((True, False))
        is_short_quest_path_required = random.choice((True, False))
        prefered_quest_markers = set((questgen_relations.OPTION_MARKERS.HONORABLE, questgen_relations.OPTION_MARKERS.AGGRESSIVE))

        self.hero.quests.update_history(quest_type='spying', turn_number=0)
        self.hero.quests.update_history(quest_type='hunt', turn_number=0)

        with contextlib.nested(
                mock.patch('the_tale.game.heroes.objects.Hero.is_first_quest_path_required', is_first_quest_path_required),
                mock.patch('the_tale.game.heroes.objects.Hero.is_short_quest_path_required', is_short_quest_path_required),
                mock.patch('the_tale.game.heroes.objects.Hero.prefered_quest_markers', lambda hero: prefered_quest_markers) ):
            hero_info = logic.create_hero_info(self.hero)

        self.assertEqual(hero_info.id, self.hero.id)
        self.assertEqual(hero_info.level, self.hero.level)
        self.assertEqual(hero_info.position_place_id, self.hero.position.place.id)
        self.assertEqual(hero_info.preferences_mob_id, self.hero.preferences.mob.id)
        self.assertEqual(hero_info.preferences_place_id, self.hero.preferences.place.id)
        self.assertEqual(hero_info.preferences_friend_id, self.hero.preferences.friend.id)
        self.assertEqual(hero_info.preferences_enemy_id, self.hero.preferences.enemy.id)
        self.assertEqual(hero_info.preferences_equipment_slot, self.hero.preferences.equipment_slot)
        self.assertEqual(hero_info.interfered_persons, [interfered_person.id])
        self.assertEqual(hero_info.is_first_quest_path_required, is_first_quest_path_required)
        self.assertEqual(hero_info.is_short_quest_path_required, is_short_quest_path_required)
        self.assertItemsEqual(hero_info.excluded_quests, self.hero.quests.history.keys())
        self.assertEqual(hero_info.prefered_quest_markers, prefered_quest_markers)
        self.assertEqual(hero_info.quests_priorities, self.hero.get_quests_priorities())

        self.check_serialization(hero_info)
Ejemplo n.º 6
0
    def test_create_hero_info__no_properties(self):
        hero_info = logic.create_hero_info(self.hero)

        self.assertEqual(hero_info.id, self.hero.id)
        self.assertEqual(hero_info.level, self.hero.level)
        self.assertEqual(hero_info.position_place_id, self.hero.position.place.id)
        self.assertEqual(hero_info.preferences_mob_id, None)
        self.assertEqual(hero_info.preferences_place_id, None)
        self.assertEqual(hero_info.preferences_friend_id, None)
        self.assertEqual(hero_info.preferences_enemy_id, None)
        self.assertEqual(hero_info.preferences_equipment_slot, None)
        self.assertEqual(hero_info.interfered_persons, [])
        self.assertEqual(hero_info.is_first_quest_path_required, self.hero.is_first_quest_path_required)
        self.assertEqual(hero_info.is_short_quest_path_required, self.hero.is_short_quest_path_required)
        self.assertItemsEqual(hero_info.excluded_quests, self.hero.quests.history.keys())
        self.assertEqual(hero_info.prefered_quest_markers, set())
        self.assertEqual(hero_info.quests_priorities, self.hero.get_quests_priorities())

        self.check_serialization(hero_info)
Ejemplo n.º 7
0
    def test_create_hero_info__no_properties(self):
        hero_info = logic.create_hero_info(self.hero)

        self.assertEqual(hero_info.id, self.hero.id)
        self.assertEqual(hero_info.level, self.hero.level)
        self.assertEqual(hero_info.position_place_id,
                         self.hero.position.place.id)
        self.assertEqual(hero_info.preferences_mob_id, None)
        self.assertEqual(hero_info.preferences_place_id, None)
        self.assertEqual(hero_info.preferences_friend_id, None)
        self.assertEqual(hero_info.preferences_enemy_id, None)
        self.assertEqual(hero_info.preferences_equipment_slot, None)
        self.assertEqual(hero_info.interfered_persons, [])
        self.assertEqual(hero_info.is_first_quest_path_required,
                         self.hero.is_first_quest_path_required)
        self.assertEqual(hero_info.is_short_quest_path_required,
                         self.hero.is_short_quest_path_required)
        self.assertCountEqual(hero_info.excluded_quests,
                              list(self.hero.quests.history.keys()))
        self.assertEqual(hero_info.prefered_quest_markers, set())
        self.assertEqual(hero_info.quests_priorities,
                         self.hero.get_quests_priorities())

        self.check_serialization(hero_info)
Ejemplo n.º 8
0
def setup_quest(hero):
    hero_info = logic.create_hero_info(hero)
    knowledge_base = logic.create_random_quest_for_hero(hero_info, mock.Mock())
    logic.setup_quest_for_hero(hero, knowledge_base.serialize())
Ejemplo n.º 9
0
    def test_create_hero_info__all_properties(self):
        self.hero.level = 11

        self.hero.position.set_place(self.place_1)

        mob = mobs_storage.all()[0]
        self.hero.preferences.set_mob(mob)

        place = self.place_1
        self.hero.preferences.set_place(place)

        friend = self.place_2.persons[0]
        self.hero.preferences.set_friend(friend)

        enemy = self.place_2.persons[1]
        self.hero.preferences.set_enemy(enemy)

        self.hero.preferences.set_equipment_slot(EQUIPMENT_SLOT.HELMET)

        interfered_person = self.place_3.persons[0]

        self.hero.quests.add_interfered_person(interfered_person.id)

        is_first_quest_path_required = random.choice((True, False))
        is_short_quest_path_required = random.choice((True, False))
        prefered_quest_markers = set(
            (questgen_relations.OPTION_MARKERS.HONORABLE,
             questgen_relations.OPTION_MARKERS.AGGRESSIVE))

        self.hero.quests.update_history(quest_type='spying', turn_number=0)
        self.hero.quests.update_history(quest_type='hunt', turn_number=0)

        with mock.patch('the_tale.game.heroes.objects.Hero.is_first_quest_path_required', is_first_quest_path_required), \
             mock.patch('the_tale.game.heroes.objects.Hero.is_short_quest_path_required', is_short_quest_path_required), \
             mock.patch('the_tale.game.heroes.objects.Hero.prefered_quest_markers', lambda hero: prefered_quest_markers):
            hero_info = logic.create_hero_info(self.hero)

        self.assertEqual(hero_info.id, self.hero.id)
        self.assertEqual(hero_info.level, self.hero.level)
        self.assertEqual(hero_info.position_place_id,
                         self.hero.position.place.id)
        self.assertEqual(hero_info.preferences_mob_id,
                         self.hero.preferences.mob.id)
        self.assertEqual(hero_info.preferences_place_id,
                         self.hero.preferences.place.id)
        self.assertEqual(hero_info.preferences_friend_id,
                         self.hero.preferences.friend.id)
        self.assertEqual(hero_info.preferences_enemy_id,
                         self.hero.preferences.enemy.id)
        self.assertEqual(hero_info.preferences_equipment_slot,
                         self.hero.preferences.equipment_slot)
        self.assertEqual(hero_info.interfered_persons, [interfered_person.id])
        self.assertEqual(hero_info.is_first_quest_path_required,
                         is_first_quest_path_required)
        self.assertEqual(hero_info.is_short_quest_path_required,
                         is_short_quest_path_required)
        self.assertCountEqual(hero_info.excluded_quests,
                              list(self.hero.quests.history.keys()))
        self.assertEqual(hero_info.prefered_quest_markers,
                         prefered_quest_markers)
        self.assertEqual(hero_info.quests_priorities,
                         self.hero.get_quests_priorities())

        self.check_serialization(hero_info)
Ejemplo n.º 10
0
 def get_hero_info(self):
     return logic.create_hero_info(self.hero)
Ejemplo n.º 11
0
def setup_quest(hero):
    hero_info = logic.create_hero_info(hero)
    knowledge_base = logic.create_random_quest_for_hero(hero_info, mock.Mock())
    logic.setup_quest_for_hero(hero, knowledge_base.serialize())
Ejemplo n.º 12
0
 def get_hero_info(self):
     return logic.create_hero_info(self.hero)