public GameplayApi(IScenarioExecutor scenarioExecutor, IScenarioFactory scenarioFactory, ILogger <GameplayApi> logger) { this._scenarioExecutor = scenarioExecutor; this._scenarioFactory = scenarioFactory; this._logger = logger; this._scenarioBuilder = new ScenarioDecoratorBuilder(this._scenarioFactory); }
public ScenarioValidator(IScenarioFactory factory) { if (factory == null) { throw new ArgumentNullException(nameof(factory)); } _factory = factory; }
public void ExecuteScenario(IScenarioFactory factory, string scenarioName) { scenarioIds = new ConcurrentBag <string>(); factories.Clear(); AddFactory(factory); LoadScenario(scenarioName); ExecuteScenarios(); }
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); } }
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(); }
/// <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); } }
public ClientCode(IScenarioFactory factory) { HumiditySensor = factory.CreateHumiditySensor(); Place = factory.GetPlace(); }
public ScenarioDecoratorBuilder(IScenarioFactory scenarioFactory) { this.scenarioFactory = scenarioFactory; this.scenarios = new Stack <IScenario>(); }
/// <summary> /// Set own custom IScenario factory /// </summary> /// <param name="scenarioFactory">IScenario factory it self</param> public StrategyBuilder SetScenario(IScenarioFactory scenarioFactory) { ScenarioFactory = scenarioFactory; return(this); }