Exemple #1
0
        public void EmptyFirstJustWorks()
        {
            DifferenceEvaluator d = DifferenceEvaluators.First();

            Assert.AreEqual(ComparisonResult.DIFFERENT,
                            d(null, ComparisonResult.DIFFERENT));
        }
Exemple #2
0
 /// <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));
 }
Exemple #3
0
 /// <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)));
 }
Exemple #4
0
        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));
        }
Exemple #5
0
        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));
        }
Exemple #6
0
        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));
        }
Exemple #7
0
        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));
        }
Exemple #8
0
        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
        }
Exemple #9
0
        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);
        }
Exemple #10
0
 /// <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);
 }
Exemple #11
0
        /// <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;
     };
 }