/// <summary> /// Compares a queryStructualValue to namedValues /// Throws a DataComparisonException if values don't match /// </summary> /// <param name="queryStructuralValue">QueryStructural Value to compare</param> /// <param name="namedValues">NamedValues to compare</param> /// <param name="scalarComparer">The comparer to use for scalar values</param> public void Compare(QueryStructuralValue queryStructuralValue, IEnumerable<NamedValue> namedValues, IQueryScalarValueToClrValueComparer scalarComparer) { ExceptionUtilities.CheckArgumentNotNull(queryStructuralValue, "queryStructuralValue"); ExceptionUtilities.CheckArgumentNotNull(namedValues, "namedValues"); ExceptionUtilities.CheckArgumentNotNull(scalarComparer, "scalarComparer"); this.errors = new List<string>(); this.unusedNamedValuePaths = new List<string>(namedValues.Select(s => s.Name).ToArray()); this.comparer = scalarComparer; this.CompareValues(queryStructuralValue, namedValues, null); foreach (string propertyPath in this.unusedNamedValuePaths) { this.errors.Add(string.Format(CultureInfo.InvariantCulture, "Value for propertyPath {0} was not compared against queryStructuralValue", propertyPath)); } string errorMessage = null; foreach (string error in this.errors) { if (errorMessage == null) { errorMessage = error; } else { errorMessage = errorMessage + ", \r\n" + error; } } if (errorMessage != null) { throw new DataComparisonException(errorMessage); } }
/// <summary> /// Compares a queryStructualValue to namedValues /// Throws a DataComparisonException if values don't match /// </summary> /// <param name="queryStructuralValue">QueryStructural Value to compare</param> /// <param name="namedValues">NamedValues to compare</param> /// <param name="scalarComparer">The comparer to use for scalar values</param> public void Compare(QueryStructuralValue queryStructuralValue, IEnumerable <NamedValue> namedValues, IQueryScalarValueToClrValueComparer scalarComparer) { ExceptionUtilities.CheckArgumentNotNull(queryStructuralValue, "queryStructuralValue"); ExceptionUtilities.CheckArgumentNotNull(namedValues, "namedValues"); ExceptionUtilities.CheckArgumentNotNull(scalarComparer, "scalarComparer"); this.errors = new List <string>(); this.unusedNamedValuePaths = new List <string>(namedValues.Select(s => s.Name).ToArray()); this.comparer = scalarComparer; this.CompareValues(queryStructuralValue, namedValues, null); foreach (string propertyPath in this.unusedNamedValuePaths) { this.errors.Add(string.Format(CultureInfo.InvariantCulture, "Value for propertyPath {0} was not compared against queryStructuralValue", propertyPath)); } string errorMessage = null; foreach (string error in this.errors) { if (errorMessage == null) { errorMessage = error; } else { errorMessage = errorMessage + ", \r\n" + error; } } if (errorMessage != null) { throw new DataComparisonException(errorMessage); } }
private void VerifyPropertyValues(ODataRequest request, IQueryScalarValueToClrValueComparer primitiveComparer, QueryStructuralValue afterUpdate) { var namedValues = this.ExtractNamedValues(request); this.Comparer.Compare(afterUpdate, namedValues, primitiveComparer); }
/// <summary> /// Initializes a new instance of the <see cref="TextValuePrimitiveComparer"/> class. /// </summary> /// <param name="realComparer">The real comparer.</param> /// <param name="converter">The converter.</param> public TextValuePrimitiveComparer(IQueryScalarValueToClrValueComparer realComparer, IXmlPrimitiveConverter converter) { this.UnderlyingComparer = realComparer; this.converter = converter; }
/// <summary> /// Compares a NamedValue to a QueryStructuralValue /// </summary> /// <param name="comparer">Comparer used to see if the specified values are equal</param> /// <param name="existing">Existing QueryStructualValue to compare to</param> /// <param name="namedValue">NamedValue to compare against</param> /// <param name="scalarComparer">Scalar comparer to use</param> public static void CompareStructuralValue(this IQueryStructuralValueToNamedValueComparer comparer, QueryStructuralValue existing, NamedValue namedValue, IQueryScalarValueToClrValueComparer scalarComparer) { comparer.Compare(existing, (new NamedValue[] { namedValue }).AsEnumerable(), scalarComparer); }