public void EmptyFirstJustWorks() { DifferenceEvaluator d = DifferenceEvaluators.First(); Assert.AreEqual(ComparisonResult.DIFFERENT, d(null, ComparisonResult.DIFFERENT)); }
/// <summary> /// Adds placeholder support to an IDifferenceEngineConfigurer /// considering an additional DifferenceEvaluator. /// </summary> /// <param name="configurer">configurer the configurer to add support to</param> /// <param name="placeholderOpeningDelimiterRegex">regular /// expression for the opening delimiter of placeholder, /// defaults to /// PlaceholderDifferenceEvaluator#PLACEHOLDER_DEFAULT_OPENING_DELIMITER_REGEX /// if the parameter is null or blank</param> /// <param name="placeholderClosingDelimiterRegex">regular /// expression for the closing delimiter of placeholder, /// defaults to /// PlaceholderDifferenceEvaluator#PLACEHOLDER_DEFAULT_CLOSING_DELIMITER_REGEX /// if the parameter is null or blank</param> /// <param name="evaluator">the additional evaluator - /// placeholder support is chained after the given /// evaluator.</param> /// <return>the configurer with placeholder support added in.</return> public static D WithPlaceholderSupportUsingDelimitersChainedAfter <D>(this D configurer, string placeholderOpeningDelimiterRegex, string placeholderClosingDelimiterRegex, DifferenceEvaluator evaluator) where D : IDifferenceEngineConfigurer <D> { return(WithPlaceholderSupportUsingDelimitersChainedAfter(configurer, placeholderOpeningDelimiterRegex, placeholderClosingDelimiterRegex, null, null, null, evaluator)); }
/// <summary> /// Adds placeholder support to an IDifferenceEngineConfigurer /// considering an additional DifferenceEvaluator. /// </summary> /// <param name="configurer">configurer the configurer to add support to</param> /// <param name="placeholderOpeningDelimiterRegex">regular /// expression for the opening delimiter of placeholder, /// defaults to /// PlaceholderDifferenceEvaluator#PLACEHOLDER_DEFAULT_OPENING_DELIMITER_REGEX /// if the parameter is null or blank</param> /// <param name="placeholderClosingDelimiterRegex">regular /// expression for the closing delimiter of placeholder, /// defaults to /// PlaceholderDifferenceEvaluator#PLACEHOLDER_DEFAULT_CLOSING_DELIMITER_REGEX /// if the parameter is null or blank</param> /// <param name="evaluator">the additional evaluator - /// placeholder support is chained after the given /// evaluator.</param> /// <return>the configurer with placeholder support added in.</return> public static D WithPlaceholderSupportUsingDelimitersChainedAfter <D>(this D configurer, string placeholderOpeningDelimiterRegex, string placeholderClosingDelimiterRegex, DifferenceEvaluator evaluator) where D : IDifferenceEngineConfigurer <D> { return(configurer.WithDifferenceEvaluator(DifferenceEvaluators.Chain( evaluator, new PlaceholderDifferenceEvaluator(placeholderOpeningDelimiterRegex, placeholderClosingDelimiterRegex).Evaluate))); }
public void DowngradeDifferencesToEqualLeavesUnknownTypesAlone() { DifferenceEvaluator d = DifferenceEvaluators .DowngradeDifferencesToEqual(ComparisonType.XML_VERSION, ComparisonType.XML_STANDALONE); Assert.AreEqual(ComparisonResult.SIMILAR, d(new Comparison(ComparisonType.XML_ENCODING, null, null, null, null, null, null, null, null), ComparisonResult.SIMILAR)); }
public void DowngradeDifferencesToEqualDowngradesMatchingTypes() { DifferenceEvaluator d = DifferenceEvaluators .DowngradeDifferencesToEqual(ComparisonType.XML_VERSION, ComparisonType.XML_STANDALONE); Assert.AreEqual(ComparisonResult.EQUAL, d(new Comparison(ComparisonType.XML_VERSION, null, null, null, null, null, null, null, null), ComparisonResult.SIMILAR)); }
public void UpgradeDifferencesToDifferentLeavesEqualResultsAlone() { DifferenceEvaluator d = DifferenceEvaluators .UpgradeDifferencesToDifferent(ComparisonType.XML_VERSION, ComparisonType.XML_STANDALONE); Assert.AreEqual(ComparisonResult.EQUAL, d(new Comparison(ComparisonType.XML_VERSION, null, null, null, null, null, null, null, null), ComparisonResult.EQUAL)); }
public void UpgradeDifferencesToDifferentUpgradesMatchingTypes() { DifferenceEvaluator d = DifferenceEvaluators .UpgradeDifferencesToDifferent(ComparisonType.XML_VERSION, ComparisonType.XML_STANDALONE); Assert.AreEqual(ComparisonResult.DIFFERENT, d(new Comparison(ComparisonType.XML_VERSION, null, null, null, null, null, null, null, null), ComparisonResult.SIMILAR)); }
public void AllEvaluatorsAreCalledInSequence() { Evaluator e1 = new Evaluator(ComparisonResult.SIMILAR); Evaluator e2 = new Evaluator(ComparisonResult.EQUAL); DifferenceEvaluator d = DifferenceEvaluators.Chain(e1.Evaluate, e2.Evaluate); Assert.AreEqual(ComparisonResult.EQUAL, d(null, ComparisonResult.DIFFERENT)); Assert.IsTrue(e1.Called); Assert.That(e1.Orig, Is.EqualTo(ComparisonResult.DIFFERENT)); // passed initial ComparisonResult Assert.IsTrue(e2.Called); Assert.That(e2.Orig, Is.EqualTo(ComparisonResult.SIMILAR)); // passed ComparisonResult from e1 }
public void FirstChangeWinsInFirst() { Evaluator e1 = new Evaluator(ComparisonResult.DIFFERENT); Evaluator e2 = new Evaluator(ComparisonResult.EQUAL); DifferenceEvaluator d = DifferenceEvaluators.First(e1.Evaluate, e2.Evaluate); Assert.AreEqual(ComparisonResult.DIFFERENT, d(null, ComparisonResult.SIMILAR)); Assert.IsTrue(e1.Called); Assert.IsFalse(e2.Called); e1.Called = false; Assert.AreEqual(ComparisonResult.EQUAL, d(null, ComparisonResult.DIFFERENT)); Assert.IsTrue(e1.Called); Assert.IsTrue(e2.Called); }
/// <summary> /// Use the given <see cref="DifferenceEvaluator"/> when comparing. /// </summary> /// <param name="differenceEvaluator">DifferenceEvaluator to use</param> public CompareConstraint WithDifferenceEvaluator(DifferenceEvaluator differenceEvaluator) { diffBuilder.WithDifferenceEvaluator(differenceEvaluator); return(this); }
/// <summary> /// Provide your own custom {@link DifferenceEvaluator} implementation. /// </summary> /// <remarks> /// <para> /// This overwrites the Default DifferenceEvaluator. /// </para> /// <para> /// If you want use your custom DifferenceEvaluator in /// combination with the default or another /// DifferenceEvaluator you should use /// DifferenceEvaluators#Chain() or /// DifferenceEvaluators#First() to combine them: /// </para> /// </remarks> /* <pre> * Diff myDiff = DiffBuilder.Compare(control).WithTest(test) * .WithDifferenceEvaluator( * DifferenceEvaluators.Chain( * DifferenceEvaluators.Default, * new MyCustomDifferenceEvaluator())) * .... * .Build(); * </pre> */ public DiffBuilder WithDifferenceEvaluator(DifferenceEvaluator differenceEvaluator) { this.differenceEvaluator = differenceEvaluator; return(this); }
/// <summary> /// Makes the comparison stop as soon as the first "real" /// difference is encountered. /// </summary> /// <param name="nestedEvaluator">provides the initial /// decision whether a difference is "real" or still leaves /// the documents in a similar state.</param> public static DifferenceEvaluator StopWhenDifferent(DifferenceEvaluator nestedEvaluator) { return delegate(Comparison comparison, ComparisonResult outcome) { ComparisonResult r = nestedEvaluator(comparison, outcome); return r == ComparisonResult.DIFFERENT ? ComparisonResult.CRITICAL : r; }; }