private void ProcessValueMembers(object setup, Dictionary <string, object> configuration, IEnumerable <ValueMemberInfo> setupMembers) { foreach (var m in configuration.Keys.Where(m => setupMembers.Select(sm => sm.Name) .Any(s => Comparer.Equals(s, m)))) { var sm = setupMembers.First(s => Comparer.Equals(s.Name, m)); // avoid repositories if (typeof(IRepository).IsAssignableFrom(sm.Type)) { continue; } var token = configuration[m]; if (token is IList) { var a = (IList)token; var l = (IList)sm.GetValue(setup); var listType = l.GetType().GetGenericArguments()[0]; foreach (var i in a) { l.Add(i.TryConvertTo(listType)); } } else { sm.SetValue(setup, Interpeter.Get(sm.Type, token.ToString())); } } }
public void TestInitialize() { ObjectFactory = new ObjectFactory(); Interpeter = new Interpeter(ObjectFactory); Company = new Company(); Division = new Division(); SubDivision = new SubDivision(); ObjectFactory.Register <Company>(x => { CompanyCount++; return(Company); }); CompanyRepository = new CompanyRepository(Interpeter, ObjectFactory); CompanyRepository.FactoryMethods.Add(PossumLabs.Specflow.Core.Variables.Characteristics.None, (x) => x); Interpeter.Register(CompanyRepository); ObjectFactory.Register <Division>(x => { DivisionCount++; return(Division); }); DivisionRepository = new DivisionRepository(Interpeter, ObjectFactory); DivisionRepository.FactoryMethods.Add(PossumLabs.Specflow.Core.Variables.Characteristics.None, (x) => x); Interpeter.Register(DivisionRepository); ObjectFactory.Register <SubDivision>(x => { SubDivisionCount++; return(SubDivision); }); SubDivisionRepository = new SubDivisionRepository(Interpeter, ObjectFactory); SubDivisionRepository.FactoryMethods.Add(PossumLabs.Specflow.Core.Variables.Characteristics.None, (x) => x); Interpeter.Register(SubDivisionRepository); }
public void Setup() { ObjectFactory = new ObjectFactory(); Interpeter = new Interpeter(ObjectFactory); TemplateManager = new TemplateManager(); ExistingDataManager = new ExistingDataManager(Interpeter, TemplateManager); }
public InterperterUnitTest() { ObjectFactory = new ObjectFactory(); Interpeter = new Interpeter(ObjectFactory); Repository = new TestTypeRepository(Interpeter, ObjectFactory); Interpeter.Register(Repository); }
public void ConvertBulk() { var types = new List <Type> { typeof(byte), typeof(int), typeof(long), typeof(Int16), typeof(UInt16), typeof(Int32), typeof(UInt32), typeof(Int64), typeof(UInt64), typeof(byte?), typeof(int?), typeof(long?), typeof(Nullable <Int16>), typeof(Nullable <UInt16>), typeof(Nullable <Int32>), typeof(Nullable <UInt32>), typeof(Nullable <Int64>), typeof(Nullable <UInt64>) }; foreach (var targetType in types) { foreach (var sourceType in types) { var i = Interpeter.Convert(sourceType, "42"); i.Should().Be(42); Interpeter.Convert(targetType, i).Should().Be(42); } } }
public Setup( IDataCreatorFactory dataCreatorFactory, ObjectFactory objectFactory, TemplateManager templateManager, Interpeter interpeter) : base(dataCreatorFactory, objectFactory, templateManager, interpeter) { ObjectFactory.Register <ParentObject>((f) => { var i = new ParentObject(); i.ComplexValue = ObjectFactory.CreateInstance <ValueObject>(); return(i); }); ObjectFactory.Register <ChildObject>((f) => { var i = new ChildObject(); i.ComplexValue = ObjectFactory.CreateInstance <ValueObject>(); return(i); }); ParentObjects = new RepositoryBase <ParentObject>(Interpeter, ObjectFactory); ChildObjects = new RepositoryBase <ChildObject>(Interpeter, ObjectFactory); Interpeter.Register(ParentObjects); Interpeter.Register(ChildObjects); }
public void SimpleDownCast() { Repository.Add("k1", new TestType { a = "test" }); ((TestType)Interpeter.Get <object>("k1")).a .Should().Be("test"); }
public void SimplePath() { Repository.Add("k1", new TestType { a = "test" }); Interpeter.Get <string>("k1.a") .Should().Be("test"); }
public void Simple() { Repository.Add("k1", new TestType { a = "test" }); Interpeter.Get <TestType>("k1").a .Should().Be("test"); }
public void ExceptionIndexedListNull() { Repository.Add("k1", new TestType { a = "test" }); Interpeter.Invoking(x => x.Get <string>("k1.list[0].a")) .Should().Throw <GherkinException>().WithMessage("Unable to resolve [0] of k1.list[0].a"); }
public void ExceptionIndexedArrayOutOfRange() { Repository.Add("k1", new TestType { a = "test", array = new[] { new TestType { a = "kid" } } }); Interpeter.Invoking(x => x.Get <string>("k1.array[1].a")) .Should().Throw <GherkinException>().WithMessage("Index [1] of k1.array[1].a is out of range, there are not enough elements"); }
public void SimpleIndexedArray() { Repository.Add("k1", new TestType { a = "test", array = new[] { new TestType { a = "kid" } } }); Interpeter.Get <string>("k1.array[0].a") .Should().Be("kid"); }
public void OneLevelDownCast() { var r = new ParrentTypeRepository(Interpeter, ObjectFactory); Interpeter.Register(r); r.Add("k1", new ParrentType { a = "test" }); ((ParrentType)Interpeter.Get <TestType>("k1")).a .Should().Be("test"); }
public SetupBase( IDataCreatorFactory dataCreatorFactory, ObjectFactory objectFactory, TemplateManager templateManager, Interpeter interpeter) { DataCreatorFactory = dataCreatorFactory; ObjectFactory = objectFactory; TemplateManager = templateManager; Interpeter = interpeter; }
public void ExceptionIndexedListOutOfRange() { Repository.Add("k1", new TestType { a = "test", list = new List <TestType> { new TestType { a = "kid" } } }); Interpeter.Invoking(x => x.Get <string>("k1.list[1].a")) .Should().Throw <GherkinException>().WithMessage("Argument [1] of k1.list[1].a is out of range, there are not enough elements"); }
public void SimpleIndexedList() { Repository.Add("k1", new TestType { a = "test", list = new List <TestType> { new TestType { a = "kid" } } }); Interpeter.Get <string>("k1.list[0].a") .Should().Be("kid"); }
public WebDriverManager( Interpeter interpeter, ObjectFactory objectFactory, SeleniumGridConfiguration seleniumGridConfiguration) : base(interpeter, objectFactory) { SeleniumGridConfiguration = seleniumGridConfiguration; Screenshots = new List <byte[]>(); DefaultDriver = new Lazy <WebDriver>(() => DefaultDriverFactory()); Drivers = new List <RemoteWebDriver>(); DefaultSize = new System.Drawing.Size(SeleniumGridConfiguration.Width, SeleniumGridConfiguration.Height); }
protected virtual void WhenEnteringIntoTable(Table table) { var tableElement = FindTable(table); foreach (var row in table.Rows) { var rowId = tableElement.GetRowId(Interpeter.Get <string>(row[0])); for (int c = 1; c < table.Header.Count; c++) { var e = tableElement.GetActiveElement(rowId, table.Header.ToList()[c]); e.Enter(base.Interpeter.Get <string>(row[c])); } } }
public void Setup() { ObjectFactory = new ObjectFactory(); Interpeter = new Interpeter(ObjectFactory); TemplateManager = new TemplateManager(); ExistingDataManager = new ExistingDataManager(Interpeter, TemplateManager); VariablesTestChildEntityRepository = new RepositoryBase <VariablesTestChildEntity>(Interpeter, ObjectFactory, TemplateManager); VariablesTestEntityRepository = new RepositoryBase <VariablesTestEntity>(Interpeter, ObjectFactory, TemplateManager); VariablesTestValueObjectRepository = new RepositoryBase <VariablesTestValueObject>(Interpeter, ObjectFactory, TemplateManager); VariablesTestChildEntityRepository.InitializeDefault(() => new VariablesTestChildEntity { Name = "from state1" }, "state1"); VariablesTestChildEntityRepository.InitializeDefault(() => new VariablesTestChildEntity { Name = "from state2" }, "state2"); }
private void ProcessLinkCreation(object setup, Dictionary <string, object> configuration, List <LinkMethod> linkMethods) { foreach (var m in configuration.Keys.Where(m => linkMethods.Select(sm => sm.JsonAttribute) .Any(s => Comparer.Equals(s, m)))) { var links = configuration[m] as List <object>; foreach (var link in links.Cast <Dictionary <string, object> >()) { var sm = linkMethods.FirstOrDefault(s => Comparer.Equals(s.JsonAttribute, m)); var l = new List <object>(); foreach (var p in sm.Parameters) { l.Add(Interpeter.Get(p.Type, link[p.JsonAttribute].ToString())); } sm.Method.Invoke(setup, l.ToArray()); } } }
public void LoadFromJsonExistingValuesTemplate() { var myEntityRepository = new RepositoryBase <MyEntity>(Interpeter, ObjectFactory); Interpeter.Register(myEntityRepository); var myValueRepository = new RepositoryBase <MyValueObject>(Interpeter, ObjectFactory); Interpeter.Register(myValueRepository); var parentObjectRepository = new RepositoryBase <ParentObject>(Interpeter, ObjectFactory); Interpeter.Register(parentObjectRepository); TemplateManager.Initialize(this.GetType().Assembly); ExistingDataManager.Initialize(this.GetType().Assembly); myValueRepository["Value2"].MyInt.Should().Be(42); myValueRepository["Value2"].MyString.Should().Be("bobbob"); myValueRepository["Value2"].MyNullableInt.Should().Be(41); }
public void GivenSettingTheProperties(Table table) { table.ContainsColumn("var").Should().BeTrue("You must specify a 'var' column"); foreach (var row in table.Rows) { var target = Interpeter.Get <object>(row["var"]); var members = target.GetType().GetValueMembers(); foreach (var column in table.Header.Except(new List <string> { "var" })) { var member = members.FirstOrDefault(m => String.Equals(m.Name, column, StringComparison.InvariantCultureIgnoreCase)); if (member == null) { throw new GherkinException($"The column '{column}' does not exist on '{target.GetType().Name}' options are '{members.LogFormat(m=>m.Name)}'"); } var value = Interpeter.Get <object>(row[column]); member.SetValue(target, value); } } }
public void TestInitialize() { ObjectFactory = new ObjectFactory(); Interpeter = new Interpeter(ObjectFactory); TemplateManager = new TemplateManager(); Company = new Company(); Division = new Division(); SubDivision = new SubDivision(); ObjectFactory.Register <Company>(x => { CompanyCount++; return(Company); }); CompanyRepository = new CompanyRepository(Interpeter, ObjectFactory, TemplateManager); CompanyRepository.InitializeCharacteristicsTransition( (x) => x, PossumLabs.DSL.Core.Variables.Characteristics.None); Interpeter.Register(CompanyRepository); ObjectFactory.Register <Division>(x => { DivisionCount++; return(Division); }); DivisionRepository = new DivisionRepository(Interpeter, ObjectFactory, TemplateManager); DivisionRepository.InitializeCharacteristicsTransition( (x) => x, PossumLabs.DSL.Core.Variables.Characteristics.None); Interpeter.Register(DivisionRepository); ObjectFactory.Register <SubDivision>(x => { SubDivisionCount++; return(SubDivision); }); SubDivisionRepository = new SubDivisionRepository(Interpeter, ObjectFactory, TemplateManager); SubDivisionRepository.InitializeCharacteristicsTransition( (x) => x, PossumLabs.DSL.Core.Variables.Characteristics.None); Interpeter.Register(SubDivisionRepository); }
public void ConvertToNullableFromString() => Interpeter.Convert(typeof(int?), "42").Should().Be(42);
public void ConvertfromString() => Interpeter.Convert(typeof(int), "42").Should().Be(42);
public void ConvertToBigger() => Interpeter.Convert(typeof(long), Convert.ToInt32(42)).Should().Be(42);
public void ConvertToNullableLongFromByte() => Interpeter.Convert(typeof(long?), Convert.ToByte(42)).Should().Be(42);
public void ConvertToNullable() => Interpeter.Convert(typeof(int?), Convert.ToInt32(42)).Should().Be(42);
public void ReturnNullWhenObjectNull() => Interpeter.Convert(typeof(MyEntity), null) .Should().BeNull("nulls should stay null if possible");
public InterperterConvertTest() { ObjectFactory = new ObjectFactory(); Interpeter = new Interpeter(ObjectFactory); }