Ejemplo n.º 1
0
 public GameplayApi(IScenarioExecutor scenarioExecutor, IScenarioFactory scenarioFactory, ILogger <GameplayApi> logger)
 {
     this._scenarioExecutor = scenarioExecutor;
     this._scenarioFactory  = scenarioFactory;
     this._logger           = logger;
     this._scenarioBuilder  = new ScenarioDecoratorBuilder(this._scenarioFactory);
 }
Ejemplo n.º 2
0
 public ScenarioValidator(IScenarioFactory factory)
 {
     if (factory == null)
     {
         throw new ArgumentNullException(nameof(factory));
     }
     _factory = factory;
 }
Ejemplo n.º 3
0
 public void ExecuteScenario(IScenarioFactory factory, string scenarioName)
 {
     scenarioIds = new ConcurrentBag <string>();
     factories.Clear();
     AddFactory(factory);
     LoadScenario(scenarioName);
     ExecuteScenarios();
 }
Ejemplo n.º 4
0
        private void AddFactory(IScenarioFactory factory)
        {
            // make sure we dont have the same factory twice.
            var found = factories.FirstOrDefault(p => p.FactoryName.Equals(factory.FactoryName, StringComparison.InvariantCultureIgnoreCase));

            if (null == found)
            {
                factories.Add(factory);
            }
        }
Ejemplo n.º 5
0
        private static void RunGeneralizedScenario <T>(IScenarioFactory <T> factory) where T : IConsumable
        {
            IConsumer <T>            aConsumer  = factory.CreateConsumer();
            IConsumableContainer <T> aContainer = factory.CreateContainer();

            aConsumer.PreConsumeAction();
            while (!aContainer.Empty)
            {
                aConsumer.Consume(aContainer.TakeNext());
            }
            aConsumer.PostConsumeAction();
        }
Ejemplo n.º 6
0
        /// <summary>
        /// gets an instance of the requested ConditionBase class by name
        /// </summary>
        /// <param name="factoryName">name of the requested ConditionBase class</param>
        /// <param name="assembly">refernce to assembly containing requested ConditionBase class</param>
        /// <returns>instance of requested condition</returns>
        private void LoadScenarioFactory(string factoryName, Assembly assembly)
        {
            // Find something that inherits from ScenarioFactoryBase
            IScenarioFactory factory = null;
            var factoryType          = Type.GetType(String.Format("{0}.{1},{0}", this.Namespace, typeof(IScenarioFactory).Name));
            int countInitial         = factories.Count;

            foreach (Type type in assembly.GetTypes())
            {
                if (null != type.Namespace && type.Namespace.ToLowerInvariant().StartsWith(this.Namespace.ToLowerInvariant()))
                {
                    continue;
                }

                foreach (var interf in type.GetInterfaces())
                {
                    if (interf.Equals(factoryType))
                    {
                        factory             = System.Activator.CreateInstance(type) as IScenarioFactory;
                        factory.Assembly    = Path.GetFileName(assembly.CodeBase);
                        factory.FactoryName = type.ToString();
                        if (String.IsNullOrEmpty(factoryName))
                        {
                            AddFactory(factory);
                        }
                        else if (Path.GetExtension(factory.FactoryName).TrimStart('.').Equals(factoryName, StringComparison.CurrentCultureIgnoreCase))
                        {
                            AddFactory(factory);
                        }
                    }
                }
            }

            if (countInitial == factories.Count && null != factoryName)
            {
                throw new CouldNotFindScenarioFactoryException(factoryName);
            }
        }
Ejemplo n.º 7
0
 public ClientCode(IScenarioFactory factory)
 {
     HumiditySensor = factory.CreateHumiditySensor();
     Place          = factory.GetPlace();
 }
Ejemplo n.º 8
0
 public ScenarioDecoratorBuilder(IScenarioFactory scenarioFactory)
 {
     this.scenarioFactory = scenarioFactory;
     this.scenarios       = new Stack <IScenario>();
 }
Ejemplo n.º 9
0
 /// <summary>
 /// Set own custom IScenario factory
 /// </summary>
 /// <param name="scenarioFactory">IScenario factory it self</param>
 public StrategyBuilder SetScenario(IScenarioFactory scenarioFactory)
 {
     ScenarioFactory = scenarioFactory;
     return(this);
 }