def test_init_single_factory(self): """ Test that action factory can be initialised with single sub factory """ mock_model = mock(Model) mock_attack_factory = mock(AttackFactory) factory = ActionFactory(mock_model, mock_attack_factory) factories = factory.get_sub_factories() assert_that(mock_attack_factory, is_in(factories))
def test_init_factory_list(self): """ Test that action factory can be initialised with list of factories """ mock_model = mock(Model) mock_move_factory = mock(MoveFactory) mock_attack_factory = mock(AttackFactory) factory = ActionFactory(mock_model, [mock_attack_factory, mock_move_factory]) factories = factory.get_sub_factories() assert_that(mock_attack_factory, is_in(factories)) assert_that(mock_move_factory, is_in(factories))
def test_get_factory_by_type(self): """ Test that factory can be found by using Parameters object """ mock_model = mock(Model) mock_move_factory = mock(MoveFactory) mock_attack_factory = mock(AttackFactory) when(mock_attack_factory).can_handle(any()).thenReturn(True) when(mock_move_factory).can_handle(any()).thenReturn(False) factory = ActionFactory(mock_model, [mock_attack_factory, mock_move_factory]) mock_parameters = mock(AttackParameters) sub_factory = factory.get_sub_factory(mock_parameters) assert_that(sub_factory, is_(same_instance(mock_attack_factory)))
def initialise_factories(self, context): """ Initialises action factory, sub factories and various generators """ effect_config = {} configurators = self.get_configurators(context.config_package, 'init_effects') for configurator in configurators: effects = configurator(context) for effect in effects: effect_config[effect[0]] = effect[1] effect_factory = get_effect_creator(effect_config) pyherc.vtable["\ufdd0:create-effect"] = effect_factory drink_factory = DrinkFactory(effect_factory) inventory_factory = InventoryFactory( [PickUpFactory(), DropFactory(), EquipFactory(), UnEquipFactory()]) spell_factory = SpellGenerator() spell_casting_factory = SpellCastingFactory(spell_factory, effect_factory) mitosis_factory = MitosisFactory(self.creature_generator, self.rng, 60) metamorphosis_factory = MetamorphosisFactory(self.creature_generator, self.rng) dig_factory = DigFactory(self.rng) trapping_factory = TrappingFactory(self.trap_generator) self.action_factory = ActionFactory(self.model, [ drink_factory, inventory_factory, spell_casting_factory, mitosis_factory, metamorphosis_factory, dig_factory, trapping_factory ]) set_action_factory(self.action_factory) self.rules_engine = RulesEngine(self.action_factory)
def build(self): """ Build action factory :returns: action factory :rtype: ActionFactory """ if self.use_real_drink_factory: self.factories.append((DrinkFactoryBuilder().with_effect_factory( self.effect_factory).build())) if self.use_real_inventory_factory: self.factories.append( InventoryFactory([ PickUpFactory(), DropFactory(), EquipFactory(), UnEquipFactory() ])) if self.use_real_spellcasting_factory: self.factories.append(SpellCastingFactoryBuilder().build()) if self.use_real_gain_domain_factory: self.factories.append(GainDomainFactoryBuilder().build()) if self.use_real_mitosis_factory: self.factories.append(MitosisFactoryBuilder().build()) if self.use_real_metamorphosis_factory: self.factories.append(MetamorphosisFactoryBuilder().build()) if self.use_real_dig_factory: self.factories.append(DigFactoryBuilder().build()) if self.use_real_trapping_factory: self.factories.append(TrappingFactoryBuilder().build()) action_factory = ActionFactory(self.model, self.factories) return action_factory