1 package org.jsoup.parser; 2 3 import org.jsoup.MultiLocaleExtension.MultiLocaleTest; 4 import org.junit.jupiter.api.Test; 5 6 import java.util.Locale; 7 8 import static org.junit.jupiter.api.Assertions.*; 9 10 /** 11 Tag tests. 12 @author Jonathan Hedley, [email protected] */ 13 public class TagTest { isCaseSensitive()14 @Test public void isCaseSensitive() { 15 Tag p1 = Tag.valueOf("P"); 16 Tag p2 = Tag.valueOf("p"); 17 assertNotEquals(p1, p2); 18 } 19 20 @MultiLocaleTest canBeInsensitive(Locale locale)21 public void canBeInsensitive(Locale locale) { 22 Locale.setDefault(locale); 23 24 Tag script1 = Tag.valueOf("script", ParseSettings.htmlDefault); 25 Tag script2 = Tag.valueOf("SCRIPT", ParseSettings.htmlDefault); 26 assertSame(script1, script2); 27 } 28 trims()29 @Test public void trims() { 30 Tag p1 = Tag.valueOf("p"); 31 Tag p2 = Tag.valueOf(" p "); 32 assertEquals(p1, p2); 33 } 34 equality()35 @Test public void equality() { 36 Tag p1 = Tag.valueOf("p"); 37 Tag p2 = Tag.valueOf("p"); 38 assertEquals(p1, p2); 39 assertSame(p1, p2); 40 } 41 divSemantics()42 @Test public void divSemantics() { 43 Tag div = Tag.valueOf("div"); 44 45 assertTrue(div.isBlock()); 46 assertTrue(div.formatAsBlock()); 47 } 48 pSemantics()49 @Test public void pSemantics() { 50 Tag p = Tag.valueOf("p"); 51 52 assertTrue(p.isBlock()); 53 assertFalse(p.formatAsBlock()); 54 } 55 imgSemantics()56 @Test public void imgSemantics() { 57 Tag img = Tag.valueOf("img"); 58 assertTrue(img.isInline()); 59 assertTrue(img.isSelfClosing()); 60 assertFalse(img.isBlock()); 61 } 62 defaultSemantics()63 @Test public void defaultSemantics() { 64 Tag foo = Tag.valueOf("FOO"); // not defined 65 Tag foo2 = Tag.valueOf("FOO"); 66 67 assertEquals(foo, foo2); 68 assertTrue(foo.isInline()); 69 assertTrue(foo.formatAsBlock()); 70 } 71 valueOfChecksNotNull()72 @Test public void valueOfChecksNotNull() { 73 assertThrows(IllegalArgumentException.class, () -> Tag.valueOf(null)); 74 } 75 valueOfChecksNotEmpty()76 @Test public void valueOfChecksNotEmpty() { 77 assertThrows(IllegalArgumentException.class, () -> Tag.valueOf(" ")); 78 } 79 knownTags()80 @Test public void knownTags() { 81 assertTrue(Tag.isKnownTag("div")); 82 assertFalse(Tag.isKnownTag("explain")); 83 } 84 knownSvgNamespace()85 @Test public void knownSvgNamespace() { 86 Tag svgHtml = Tag.valueOf("svg"); // no namespace specified, defaults to html, so not the known tag 87 Tag svg = Tag.valueOf("svg", Parser.NamespaceSvg, ParseSettings.htmlDefault); 88 89 assertEquals(Parser.NamespaceHtml, svgHtml.namespace()); 90 assertEquals(Parser.NamespaceSvg, svg.namespace()); 91 92 assertFalse(svgHtml.isBlock()); // generated 93 assertTrue(svg.isBlock()); // known 94 } 95 unknownTagNamespace()96 @Test public void unknownTagNamespace() { 97 Tag fooHtml = Tag.valueOf("foo"); // no namespace specified, defaults to html 98 Tag foo = Tag.valueOf("foo", Parser.NamespaceSvg, ParseSettings.htmlDefault); 99 100 assertEquals(Parser.NamespaceHtml, fooHtml.namespace()); 101 assertEquals(Parser.NamespaceSvg, foo.namespace()); 102 103 assertFalse(fooHtml.isBlock()); // generated 104 assertFalse(foo.isBlock()); // generated 105 } 106 } 107