Exemple #1
0
        public void Equals_WhenCandidateHasAdditionalAttributesAndIgnoreAdditionalAttributesIsFalse_ShouldReturnMatch()
        {
            var comparer = new HtmlComparer(new HtmlCompareOptions {
                IgnoreAdditionalAttributes = true
            });

            Assert.True(comparer.Equals("<p class='one'>text</p>", "<p id='wow' class='one' data-value='something'>text</p>"));
        }
Exemple #2
0
        public void Equals_WhenCandidateHasAdditionalClassNamesAndIgnoreAdditionalClassNamesIsTrue_ShouldReturnMatch()
        {
            var comparer = new HtmlComparer(new HtmlCompareOptions {
                IgnoreAdditionalClassNames = true
            });

            Assert.True(comparer.Equals("<p class='one'>text</p>", "<p class='two one'>text</p>"));
        }
Exemple #3
0
        public void Equals_WithElementComparisonSetToElement_WhenExpectedContainsChildElements_ShouldThrow()
        {
            const string expected  = "<p>This shouldn't be here</p>";
            const string candidate = "<div><p>not compared</p></div>";

            var comparer = new HtmlComparer(new HtmlCompareOptions {
                TreatHtmlAsFragment = true, ElementComparisonMode = ElementComparisonMode.Element
            });

            Assert.Throws <ArgumentException>("expected", () => comparer.Equals(expected, candidate, "p"));
        }
Exemple #4
0
        public void Equals_WithElementComparisonSetToElementAndExpectedIsSelfClosing_WhenSelectedElementMatchesElement_ShouldReturnMatch()
        {
            const string expected  = "<p id='one'/>";
            const string candidate = "<div><p id='one'>something else</p></div>";

            var comparer = new HtmlComparer(new HtmlCompareOptions {
                TreatHtmlAsFragment = true, ElementComparisonMode = ElementComparisonMode.Element
            });

            Assert.True(comparer.Equals(expected, candidate, "#one"));
        }
Exemple #5
0
        public void Equals_WithElementComparisonSetToOuter_WhenExpectedContainsMultipleRootElements_ShouldThrow()
        {
            const string expected  = "<p>one</p><p>two</p>";
            const string candidate = "<div><p>not compared</p></div>";

            var comparer = new HtmlComparer(new HtmlCompareOptions {
                TreatHtmlAsFragment = true, ElementComparisonMode = ElementComparisonMode.OuterHtml
            });

            Assert.Throws <ArgumentException>("expected", () => comparer.Equals(expected, candidate, "p"));
        }
Exemple #6
0
        public void Equals_WithElementComparisonSetToOuter_WhenSelectedElementMatchesExpectedAndHasSiblings_ShouldReturnMatch()
        {
            const string expected  = "<p id='one'>text</p>";
            const string candidate = "<div><p id='one'>text</p><p>next</p></div>";

            var comparer = new HtmlComparer(new HtmlCompareOptions {
                TreatHtmlAsFragment = true, ElementComparisonMode = ElementComparisonMode.OuterHtml
            });

            Assert.True(comparer.Equals(expected, candidate, "#one"));
        }
Exemple #7
0
        public void Equals_WithElementComparisonSetToElement_WhenSelectedElementDiffer_ShouldReturnMismatch()
        {
            const string expected  = "<main id='one'/>";
            const string candidate = "<div><p id='one'>not compared</p></div>";

            var comparer = new HtmlComparer(new HtmlCompareOptions {
                TreatHtmlAsFragment = true, ElementComparisonMode = ElementComparisonMode.Element
            });

            var result = comparer.Equals(expected, candidate, "#one");

            AssertMismatch(result, expected, "<p id=\"one\">");
        }
Exemple #8
0
        public void Equals_WithCaseInsensitiveAttributeComparison_WhenClassAttributesValuesAreDifferentCase_ShouldReturnMismatch()
        {
            const string expected  = "<p class='one'>text</p>";
            const string candidate = "<p class='ONE'>text</p>";

            var comparer = new HtmlComparer(new HtmlCompareOptions {
                TreatHtmlAsFragment = true, AttributeComparer = StringComparer.OrdinalIgnoreCase
            });

            var result = comparer.Equals(expected, candidate);

            AssertMismatch(result, expected, candidate);
        }
Exemple #9
0
        public void Equals_WithCaseInsensitiveAttributeComparison_WhenAttributesValuesAreDifferentCase_ShouldReturnMatch()
        {
            const string expected  = "<p longdesc='one'>text</p>";
            const string candidate = "<p longdesc='ONE'>text</p>";

            var comparer = new HtmlComparer(new HtmlCompareOptions {
                AttributeComparer = StringComparer.OrdinalIgnoreCase
            });

            var result = comparer.Equals(expected, candidate);

            Assert.True(result);
        }
Exemple #10
0
        public void Equals_WhenClassAttributeValuesAreInDifferentOrderAndIgnoreOrderIsFalse_ShouldReturnMismatch()
        {
            const string expected  = "<p class='one two'>text</p>";
            const string candidate = "<p class='two one'>text</p>";

            var comparer = new HtmlComparer(new HtmlCompareOptions {
                TreatHtmlAsFragment = true, IgnoreClassNameOrder = false
            });

            var result = comparer.Equals(expected, candidate);

            AssertMismatch(result, expected, candidate);
        }
Exemple #11
0
        public void Equals_WithSelectionModeAny_WhenMultipleElementsExistAndOneMatches_ShouldReturnMatch()
        {
            const string expected  = "<p>text</p>";
            const string candidate =
                @"
                <section class='someClass'><p>nope</p></section>
                <section class='someClass'><p>text</p></section>
                <section class='someClass'><p>fake</p></section>
            ";

            var comparer = new HtmlComparer(new HtmlCompareOptions {
                ElementSelectionMode = ElementSelectionMode.Any
            });

            Assert.True(comparer.Equals(expected, candidate, ".someClass"));
        }
Exemple #12
0
        public void Equals_WithSelectionModeSingle_WhenOnlyOneElementsExist_ShouldReturnMatch()
        {
            const string expected  = "<p>text</p>";
            const string candidate =
                @"
                <section class='one'><p>nope</p></section>
                <section class='two'><p>text</p></section>
                <section class='three'><p>fake</p></section>
            ";

            var comparer = new HtmlComparer(new HtmlCompareOptions {
                ElementSelectionMode = ElementSelectionMode.Single
            });

            Assert.True(comparer.Equals(expected, candidate, ".two"));
        }
Exemple #13
0
        public void Equals_WithDefaultSelectionMode_WhenMultipleElementsExistAndFirstDoesNotMatch_ShouldReturnMismatch()
        {
            const string expected  = "<p>text</p>";
            const string candidate =
                @"
                <section class='someClass'><p>nope</p></section>
                <section class='someClass'><p>fake</p></section>
            ";

            var comparer = new HtmlComparer(new HtmlCompareOptions {
                ElementSelectionMode = ElementSelectionMode.First
            });

            var result = comparer.Equals(expected, candidate, ".someClass");

            AssertMismatch(result, expected, "<p>nope</p>");
        }
Exemple #14
0
        public void Equals_WithSelectionModeAll_WhenMultipleElementsAreSelectedAndNotAllMatch_ShouldReturnMismatch()
        {
            const string expected  = "<p>text</p>";
            const string candidate =
                @"
                <section class='someClass'><p>text</p></section>
                <section class='someClass'><p>nope</p></section>
                <section class='someClass'><p>text</p></section>
            ";

            var comparer = new HtmlComparer(new HtmlCompareOptions {
                ElementSelectionMode = ElementSelectionMode.All
            });

            var result = comparer.Equals(expected, candidate, ".someClass");

            AssertMismatch(result, expected, "<p>nope</p>");
        }
Exemple #15
0
        public void Equals_WithSelectionModeSingle_WhenMultipleElementsExist_ShouldReturnMultipleElementsFoundMismatch()
        {
            const string expected  = "<p>text</p>";
            const string candidate =
                @"
                <section class='someClass'><p>text</p></section>
                <section class='someClass'><p>nope</p></section>
                <section class='someClass'><p>fake</p></section>
            ";

            var comparer = new HtmlComparer(new HtmlCompareOptions {
                ElementSelectionMode = ElementSelectionMode.Single
            });

            var result = comparer.Equals(expected, candidate, ".someClass");

            AssertMismatch(result, reason: HtmlCompareMismatchReason.MultipleElementsFound);
        }