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); }
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); }
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>()); }
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>()); }
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>()); }
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>()); }
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>()); }
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> >()); }
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>()); }
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>()); }
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>()); }
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)); }