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);
        }
Beispiel #3
0
 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);
 }
Beispiel #5
0
        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);
                }
            }
        }
Beispiel #6
0
        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]));
                }
            }
        }
Beispiel #19
0
        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());
                }
            }
        }
Beispiel #21
0
        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);
        }
Beispiel #22
0
 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);
         }
     }
 }
Beispiel #23
0
        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);
        }
Beispiel #24
0
 public void ConvertToNullableFromString()
 => Interpeter.Convert(typeof(int?), "42").Should().Be(42);
Beispiel #25
0
 public void ConvertfromString()
 => Interpeter.Convert(typeof(int), "42").Should().Be(42);
Beispiel #26
0
 public void ConvertToBigger()
 => Interpeter.Convert(typeof(long), Convert.ToInt32(42)).Should().Be(42);
Beispiel #27
0
 public void ConvertToNullableLongFromByte()
 => Interpeter.Convert(typeof(long?), Convert.ToByte(42)).Should().Be(42);
Beispiel #28
0
 public void ConvertToNullable()
 => Interpeter.Convert(typeof(int?), Convert.ToInt32(42)).Should().Be(42);
Beispiel #29
0
 public void ReturnNullWhenObjectNull()
 => Interpeter.Convert(typeof(MyEntity), null)
 .Should().BeNull("nulls should stay null if possible");
Beispiel #30
0
 public InterperterConvertTest()
 {
     ObjectFactory = new ObjectFactory();
     Interpeter    = new Interpeter(ObjectFactory);
 }