public void Instantiate_NonDefaultKeyAndKeyName_Exception() { var builder = new ResultSetComparisonBuilder(); Assert.Throws <InvalidOperationException>(() => builder.Setup( true , SettingsResultSetComparisonByIndex.KeysChoice.All , "MyKey" , SettingsResultSetComparisonByIndex.ValuesChoice.AllExpectFirst , string.Empty , ColumnType.Numeric , null , null , ComparisonKind.EqualTo )); }
public ISettingsResultSetComparison GetSettings() { var builder = new ResultSetComparisonBuilder(); builder.Setup( Behavior == ComparisonBehavior.MultipleRows , KeysDef , KeyName , ValuesDef , ValueName , ValuesDefaultType , new NumericToleranceFactory().Instantiate(Tolerance) , ColumnsDef , ComparisonKind.EqualTo); builder.Build(); return(builder.GetSettings()); }
public void Instantiate_TwiceTheSameIndexedColumn_Exception() { var columnDef = Mock.Of <IColumnDefinition>(); columnDef.Index = 1; var builder = new ResultSetComparisonBuilder(); Assert.Throws <InvalidOperationException>(() => builder.Setup( true , SettingsResultSetComparisonByIndex.KeysChoice.AllExpectLast , string.Empty , SettingsResultSetComparisonByIndex.ValuesChoice.AllExpectFirst , string.Empty , ColumnType.Numeric , null , Enumerable.Repeat(columnDef, 2).ToList() , ComparisonKind.EqualTo )); }
protected NBiConstraint InstantiateConstraint() { BaseResultSetComparisonConstraint ctr = null; if (ConstraintXml.GetCommand() != null) { var commandText = ConstraintXml.GetCommand().CommandText; var connectionString = ConstraintXml.GetCommand().Connection.ConnectionString; var timeout = ((QueryXml)(ConstraintXml.BaseItem)).Timeout; IEnumerable <IQueryParameter> parameters = null; IEnumerable <IQueryTemplateVariable> variables = null; if (ConstraintXml.Query != null) { parameters = ConstraintXml.Query.GetParameters(); variables = ConstraintXml.Query.GetVariables(); } var commandBuilder = new CommandBuilder(); var cmd = commandBuilder.Build(connectionString, commandText, parameters, variables, timeout); ctr = InstantiateConstraint(cmd); } else if (ConstraintXml.ResultSet != null) { if (!string.IsNullOrEmpty(ConstraintXml.ResultSet.File)) { Trace.WriteLineIf(NBiTraceSwitch.TraceVerbose, "ResultSet defined in external file!"); ctr = InstantiateConstraint(ConstraintXml.ResultSet.GetFile()); if (ConstraintXml.Settings.CsvProfile != null) { ctr = ctr.CsvProfile(ConstraintXml.Settings.CsvProfile); } } else if (ConstraintXml.ResultSet.Rows != null) { Trace.WriteLineIf(NBiTraceSwitch.TraceVerbose, "ResultSet defined in embedded resultSet!"); ctr = InstantiateConstraint(ConstraintXml.ResultSet.Content); } } else if (ConstraintXml.XmlSource != null) { var selects = new List <AbstractSelect>(); var factory = new SelectFactory(); foreach (var select in ConstraintXml.XmlSource.XPath.Selects) { selects.Add(factory.Instantiate(select.Value, select.Attribute, select.Evaluate)); } XPathEngine engine = null; if (ConstraintXml.XmlSource.File != null) { Trace.WriteLineIf(NBiTraceSwitch.TraceVerbose, string.Format("Xml file at '{0}'", ConstraintXml.XmlSource.GetFile())); engine = new XPathFileEngine(ConstraintXml.XmlSource.GetFile(), ConstraintXml.XmlSource.XPath.From.Value, selects); } else if (ConstraintXml.XmlSource.Url != null) { Trace.WriteLineIf(NBiTraceSwitch.TraceVerbose, string.Format("Xml file at '{0}'", ConstraintXml.XmlSource.Url.Value)); engine = new XPathUrlEngine(ConstraintXml.XmlSource.Url.Value, ConstraintXml.XmlSource.XPath.From.Value, selects); } else { throw new ArgumentException("File or Url can't be both empty when declaring an xml-source."); } ctr = InstantiateConstraint(engine); } if (ctr == null) { throw new ArgumentException(); } //Manage settings for comparaison var builder = new ResultSetComparisonBuilder(); if (ConstraintXml.Behavior == EqualToXml.ComparisonBehavior.SingleRow) { builder.Setup(false, 0, null, 0, null, ConstraintXml.ValuesDefaultType, ToleranceFactory.Instantiate(ConstraintXml.ValuesDefaultType, ConstraintXml.Tolerance), ConstraintXml.ColumnsDef , ComparisonKind.EqualTo ); } else { builder.Setup( true, ConstraintXml.KeysDef, ConstraintXml.KeyName, ConstraintXml.ValuesDef, ConstraintXml.ValueName, ConstraintXml.ValuesDefaultType, ToleranceFactory.Instantiate(ConstraintXml.ValuesDefaultType, ConstraintXml.Tolerance), ConstraintXml.ColumnsDef, ComparisonKind ); } builder.Build(); ctr = ctr.Using(builder.GetComparer()); var settings = builder.GetSettings(); ctr = ctr.Using(settings); //Manage transformations var transformationProvider = new TransformationProvider(); foreach (var columnDef in ConstraintXml.ColumnsDef) { if (columnDef.Transformation != null) { transformationProvider.Add(columnDef.Index, columnDef.Transformation); } } ctr = ctr.Using(transformationProvider); //Manage parallelism if (ConstraintXml.ParallelizeQueries) { ctr = ctr.Parallel(); } else { ctr = ctr.Sequential(); } return(ctr); }