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

            Assert.AreEqual(ComparisonResult.DIFFERENT,
                            d(null, ComparisonResult.DIFFERENT));
        }
예제 #2
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));
        }
예제 #3
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));
        }
예제 #4
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));
        }
예제 #5
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));
        }
예제 #6
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
        }
예제 #7
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);
        }
예제 #8
0
        private IList <Comparison> Compare(string controlXml, string testXml,
                                           bool ignoreDoctypeDeclarationAsWell)
        {
            ISource             control = InputBuilder.From(controlXml).Build();
            ISource             test    = InputBuilder.From(testXml).Build();
            DOMDifferenceEngine e       = new DOMDifferenceEngine();

            if (ignoreDoctypeDeclarationAsWell)
            {
                e.DifferenceEvaluator = DifferenceEvaluators.IgnorePrologDifferences();
            }
            else
            {
                e.DifferenceEvaluator = DifferenceEvaluators.IgnorePrologDifferencesExceptDoctype();
            }
            var differences = new List <Comparison>();

            e.DifferenceListener += (comparison, outcome) => differences.Add(comparison);
            e.Compare(control, test);
            return(differences);
        }