diff --git a/src/test/java/org/jsoup/helper/ValidateTest.java b/src/test/java/org/jsoup/helper/ValidateTest.java index c7a093c358..cb15bcf737 100644 --- a/src/test/java/org/jsoup/helper/ValidateTest.java +++ b/src/test/java/org/jsoup/helper/ValidateTest.java @@ -43,4 +43,36 @@ public void testNotNull() { } assertTrue(threw); } + @Test + void testEnsureNotNullWithNonNullObject() { + Object nonNullObject = new Object(); + assertEquals(nonNullObject, Validate.ensureNotNull(nonNullObject)); + } + + @Test + void testEnsureNotNullWithNullObject() { + Object nullObject = null; + assertThrows(ValidationException.class,() -> Validate.ensureNotNull(nullObject)); + } + + @Test + void testIsTrueWithFalseValue() { + assertThrows(ValidationException.class,() -> Validate.isTrue(false)); + } + + @Test + void testIsFalseWithTrueValue() { + assertThrows(ValidationException.class,() -> Validate.isFalse(true)); + } + + @Test + void testNoNullElementsWithNullElement() { + Object[] objects = { "notNull", null, "anotherNotNull" }; + assertThrows(ValidationException.class, () -> Validate.noNullElements(objects, "Array must not contain null elements")); + } + + @Test + void testSomeConditionThatShouldNotBeMet() { + assertThrows(ValidationException.class, () -> Validate.assertFail("This condition should not be met")); + } } diff --git a/src/test/java/org/jsoup/nodes/AttributeTest.java b/src/test/java/org/jsoup/nodes/AttributeTest.java index 454b3bb041..812fed410f 100644 --- a/src/test/java/org/jsoup/nodes/AttributeTest.java +++ b/src/test/java/org/jsoup/nodes/AttributeTest.java @@ -89,4 +89,14 @@ public void html() { Document doc2 = Jsoup.parse(html, Parser.htmlParser().settings(ParseSettings.preserveCase)); assertEquals("One", doc2.selectFirst("a").outerHtml()); } + + @Test + void createFromEncoded() { + String unencodedKey = "src"; + String encodedValue = "<img src="/image.jpg">"; + Attribute attribute = Attribute.createFromEncoded(unencodedKey, encodedValue); + assertNotNull(attribute); + assertEquals(unencodedKey, attribute.getKey()); + assertEquals("", attribute.getValue()); + } } diff --git a/src/test/java/org/jsoup/parser/PositionTest.java b/src/test/java/org/jsoup/parser/PositionTest.java index 24beec8d5a..7e377d1bd7 100644 --- a/src/test/java/org/jsoup/parser/PositionTest.java +++ b/src/test/java/org/jsoup/parser/PositionTest.java @@ -1,19 +1,9 @@ package org.jsoup.parser; +import org.jsoup.Connection; import org.jsoup.Jsoup; import org.jsoup.integration.servlets.FileServlet; -import org.jsoup.nodes.Attribute; -import org.jsoup.nodes.CDataNode; -import org.jsoup.nodes.Comment; -import org.jsoup.nodes.DataNode; -import org.jsoup.nodes.Document; -import org.jsoup.nodes.DocumentType; -import org.jsoup.nodes.Element; -import org.jsoup.nodes.LeafNode; -import org.jsoup.nodes.Node; -import org.jsoup.nodes.Range; -import org.jsoup.nodes.TextNode; -import org.jsoup.nodes.XmlDeclaration; +import org.jsoup.nodes.*; import org.jsoup.select.Elements; import org.junit.jupiter.api.Test; @@ -533,6 +523,35 @@ private void printRange(Node node) { assertEquals(expectedRange, attr2.sourceRange().toString()); } + @Test void hashCodeShouldBeConsistentWithEquals() { + String html = "
Text"; + Document doc = Jsoup.parse(html, TrackingHtmlParser); + + Element div = doc.expectFirst("div"); + + Range.AttributeRange classAttributeRange = div.attributes().sourceRange("class"); + int classAttributeNameRangeHash = classAttributeRange.nameRange().hashCode(); + int classAttributeValueRangeHash = classAttributeRange.valueRange().hashCode(); + + Range.AttributeRange customAttributeRange = div.attributes().sourceRange("data-custom"); + int customAttributeRangeNameRangeHash = customAttributeRange.nameRange().hashCode(); + int customAttributeRangeValueRangeHash = customAttributeRange.valueRange().hashCode(); + + + assertEquals(31 * classAttributeNameRangeHash + classAttributeValueRangeHash, classAttributeRange.hashCode()); + assertEquals(31 * customAttributeRangeNameRangeHash + customAttributeRangeValueRangeHash, customAttributeRange.hashCode()); + } + + @Test public void formDataWithNoSelectedOption() { + String html = "