Ejemplo n.º 1
0
        private IDictionary <string, ITestVariable> BuildVariables(IEnumerable <GlobalVariableXml> variables)
        {
            var instances       = new Dictionary <string, ITestVariable>();
            var resolverFactory = serviceLocator.GetScalarResolverFactory();
            var factory         = new TestVariableFactory();

            Trace.WriteLineIf(Extensibility.NBiTraceSwitch.TraceInfo, $"{variables.Count()} variable{(variables.Count() > 1 ? "s" : string.Empty)} defined in the test-suite.");
            foreach (var variable in variables)
            {
                var builder = new ScalarResolverArgsBuilder(serviceLocator);
                builder.Setup(instances); //Pass the catalog that we're building to itself
                if (variable.Script != null)
                {
                    builder.Setup(variable.Script);
                }
                else if (variable.QueryScalar != null)
                {
                    variable.QueryScalar.Settings = TestSuiteManager.TestSuite.Settings;
                    variable.QueryScalar.Default  = TestSuiteManager.TestSuite.Settings.GetDefault(Xml.Settings.SettingsXml.DefaultScope.Variable);
                    builder.Setup(variable.QueryScalar);
                }
                builder.Build();
                var args = builder.GetArgs();

                var resolver = resolverFactory.Instantiate <object>(args);

                var instance = factory.Instantiate(resolver);
                instances.Add(variable.Name, instance);
            }

            return(instances);
        }
Ejemplo n.º 2
0
        public void Build_ContextColumnOrdinal_ContextScalarResolverArgs()
        {
            var builder = new ScalarResolverArgsBuilder(new ServiceLocator(), Context.None);

            builder.Setup("#12");
            builder.Build();
            var args = builder.GetArgs();

            Assert.That(args, Is.TypeOf <ContextScalarResolverArgs>());
        }
Ejemplo n.º 3
0
        public void Build_Format_FormatResolverArgs()
        {
            var builder = new ScalarResolverArgsBuilder(new ServiceLocator(), null);

            builder.Setup("~First day of 2018 is a { @myVar: dddd}");
            builder.Build();
            var args = builder.GetArgs();

            Assert.That(args, Is.TypeOf <FormatScalarResolverArgs>());
        }
Ejemplo n.º 4
0
        public void Build_Variable_GlobalVariableScalarResolverArgs()
        {
            var builder = new ScalarResolverArgsBuilder(new ServiceLocator(), null);

            builder.Setup("@myVar");
            builder.Build();
            var args = builder.GetArgs();

            Assert.That(args, Is.TypeOf <GlobalVariableScalarResolverArgs>());
        }
Ejemplo n.º 5
0
        public void Build_FormatIncludingFunctions_FunctionScalarResolverArgs()
        {
            var builder = new ScalarResolverArgsBuilder(new ServiceLocator(), null);

            builder.Setup("~First day of 2018 is a { @myVar | dateTime-to-previous-month : dddd }");
            builder.Build();
            var args = builder.GetArgs();

            Assert.That(args, Is.TypeOf <FormatScalarResolverArgs>());
        }
Ejemplo n.º 6
0
        public void Build_Literal_LiteralResolverArgs()
        {
            var builder = new ScalarResolverArgsBuilder(new ServiceLocator(), null);

            builder.Setup("2019-03-12");
            builder.Build();
            var args = builder.GetArgs();

            Assert.That(args, Is.TypeOf <LiteralScalarResolverArgs>());
        }
Ejemplo n.º 7
0
        public void Build_ContextColumnOrdinalFollowedByNativeTransformations_ContextScalarResolverArgs()
        {
            var builder = new ScalarResolverArgsBuilder(new ServiceLocator(), Context.None);

            builder.Setup("#12 | text-to-upper | text-to-first-chars([ColA])");
            builder.Build();
            var args = builder.GetArgs();

            Assert.That(args, Is.TypeOf <FunctionScalarResolverArgs>());
            Assert.That((args as FunctionScalarResolverArgs).Resolver, Is.AssignableFrom <ContextScalarResolver <object> >());
        }
Ejemplo n.º 8
0
        public void Build_LiteralAndFunctions_FunctionScalarResolverArgs()
        {
            var builder = new ScalarResolverArgsBuilder(new ServiceLocator(), null);

            builder.Setup("2019-03-12 | dateTime-to-first-of-month");
            builder.Build();
            var args = builder.GetArgs();

            Assert.That(args, Is.TypeOf <FunctionScalarResolverArgs>());
            var typedArgs = args as FunctionScalarResolverArgs;

            Assert.That(typedArgs.Resolver, Is.TypeOf <LiteralScalarResolver <object> >());
            Assert.That(typedArgs.Resolver.Execute(), Is.EqualTo("2019-03-12"));
            Assert.That(typedArgs.Transformations, Has.Count.EqualTo(1));
            Assert.That(typedArgs.Transformations.ElementAt(0), Is.TypeOf <DateTimeToFirstOfMonth>());
        }
Ejemplo n.º 9
0
        public void Build_FormatAndFunctions_FunctionScalarResolverArgs()
        {
            var builder = new ScalarResolverArgsBuilder(new ServiceLocator(), null);

            builder.Setup("~First day of 2018 is a { @myVar: dddd} | text-to-length");
            builder.Build();
            var args = builder.GetArgs();

            Assert.That(args, Is.TypeOf <FunctionScalarResolverArgs>());

            var typedArgs = args as FunctionScalarResolverArgs;

            Assert.That(typedArgs.Resolver, Is.TypeOf <FormatScalarResolver>());
            Assert.That(typedArgs.Transformations, Has.Count.EqualTo(1));
            Assert.That(typedArgs.Transformations.ElementAt(0), Is.TypeOf <TextToLength>());
        }
Ejemplo n.º 10
0
        private IDictionary <string, ITestVariable> BuildVariables(IEnumerable <GlobalVariableXml> variables, IDictionary <string, object> overridenVariables)
        {
            var instances       = new Dictionary <string, ITestVariable>();
            var resolverFactory = serviceLocator.GetScalarResolverFactory();

            Trace.WriteLineIf(NBiTraceSwitch.TraceInfo, $"{variables.Count()} variable{(variables.Count() > 1 ? "s" : string.Empty)} defined in the test-suite.");
            var variableFactory = new VariableFactory();

            foreach (var variable in variables)
            {
                if (overridenVariables.ContainsKey(variable.Name))
                {
                    var instance = new OverridenVariable(variable.Name, overridenVariables[variable.Name]);
                    instances.Add(variable.Name, instance);
                }
                else
                {
                    var builder = new ScalarResolverArgsBuilder(serviceLocator, new Context(instances));

                    if (variable.Script != null)
                    {
                        builder.Setup(variable.Script);
                    }
                    else if (variable.QueryScalar != null)
                    {
                        variable.QueryScalar.Settings = TestSuiteManager.TestSuite.Settings;
                        variable.QueryScalar.Default  = TestSuiteManager.TestSuite.Settings.GetDefault(Xml.Settings.SettingsXml.DefaultScope.Variable);
                        builder.Setup(variable.QueryScalar, variable.QueryScalar.Settings, Xml.Settings.SettingsXml.DefaultScope.Variable);
                    }
                    else if (variable.Environment != null)
                    {
                        builder.Setup(variable.Environment);
                    }
                    else if (variable.Custom != null)
                    {
                        builder.Setup(variable.Custom);
                    }
                    builder.Build();
                    var args = builder.GetArgs();

                    var resolver = resolverFactory.Instantiate(args);
                    instances.Add(variable.Name, variableFactory.Instantiate(VariableScope.Global, resolver));
                }
            }

            return(instances);
        }
Ejemplo n.º 11
0
        public void Build_VariableAndFunctions_FunctionScalarResolverArgs()
        {
            var builder = new ScalarResolverArgsBuilder(new ServiceLocator(), null);

            builder.Setup("@myVar | text-to-trim | text-to-length");
            builder.Build();
            var args = builder.GetArgs();

            Assert.That(args, Is.TypeOf <FunctionScalarResolverArgs>());

            var typedArgs = args as FunctionScalarResolverArgs;

            Assert.That(typedArgs.Resolver, Is.TypeOf <GlobalVariableScalarResolver <object> >());
            Assert.That(typedArgs.Transformations, Has.Count.EqualTo(2));
            Assert.That(typedArgs.Transformations.ElementAt(0), Is.TypeOf <TextToTrim>());
            Assert.That(typedArgs.Transformations.ElementAt(1), Is.TypeOf <TextToLength>());
        }
Ejemplo n.º 12
0
        protected virtual DifferedConstraint BuildChildConstraint(PredicateXml xml)
        {
            var builder = new ScalarResolverArgsBuilder(ServiceLocator);

            if (!string.IsNullOrEmpty(xml.Value))
            {
                if (xml.Value.Trim().EndsWith("%"))
                {
                    builder.Setup(xml.Value.Trim().Substring(0, xml.Value.Trim().IndexOf("%")));
                }
                else
                {
                    builder.Setup(xml.Value);
                }
            }

            if (xml.QueryScalar != null)
            {
                builder.Setup(xml.QueryScalar);
            }

            if (xml.Projection != null)
            {
                builder.Setup(xml.Projection);
            }

            builder.Setup(ConstraintXml.Settings);
            builder.Setup(Variables);
            builder.Build();
            var args = builder.GetArgs();

            var factory  = ServiceLocator.GetScalarResolverFactory();
            var resolver = factory.Instantiate <decimal>(args);

            Type ctrType = null;

            if (xml is LessThanXml)
            {
                if (((LessThanXml)xml).OrEqual)
                {
                    ctrType = typeof(NUnitCtr.LessThanOrEqualConstraint);
                }
                else
                {
                    ctrType = typeof(NUnitCtr.LessThanConstraint);
                }
            }
            else if (xml is MoreThanXml)
            {
                if (((MoreThanXml)xml).OrEqual)
                {
                    ctrType = typeof(NUnitCtr.GreaterThanOrEqualConstraint);
                }
                else
                {
                    ctrType = typeof(NUnitCtr.GreaterThanConstraint);
                }
            }
            else if (xml is EqualXml)
            {
                ctrType = typeof(NUnitCtr.EqualConstraint);
            }

            if (ctrType == null)
            {
                throw new ArgumentException();
            }

            return(new DifferedConstraint(ctrType, resolver));
        }