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>")); }
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>")); }
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")); }
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")); }
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")); }
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")); }
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\">"); }
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); }
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); }
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); }
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")); }
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")); }
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>"); }
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>"); }
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); }