1 package org.apache.maven.doxia.util;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import java.net.URLEncoder;
23 import java.util.Locale;
24
25 import org.codehaus.plexus.PlexusTestCase;
26
27
28
29
30
31
32
33 public class HtmlToolsTest
34 extends PlexusTestCase
35 {
36
37
38
39 public void testEscapeHTML()
40 {
41 assertEquals( HtmlTools.escapeHTML( null ), "" );
42 assertEquals( HtmlTools.escapeHTML( "" ), "" );
43 assertEquals( HtmlTools.escapeHTML( "\u0009" ), "\u0009" );
44 assertEquals( HtmlTools.escapeHTML( "\u0001" ), "\u0001" );
45
46
47 assertEquals( HtmlTools.escapeHTML( "<" ), "<" );
48 assertEquals( HtmlTools.escapeHTML( ">" ), ">" );
49 assertEquals( HtmlTools.escapeHTML( "&" ), "&" );
50 assertEquals( HtmlTools.escapeHTML( "\"" ), """ );
51 assertEquals( HtmlTools.escapeHTML( "\'" ), "'" );
52 assertEquals( HtmlTools.escapeHTML( "\'", false ), "\'" );
53
54
55 assertEquals( HtmlTools.escapeHTML( "&" ), "&amp;" );
56 assertEquals( HtmlTools.escapeHTML( "\u00e4", true ), "\u00e4" );
57 assertEquals( HtmlTools.escapeHTML( "\u00e4", false ), "ä" );
58 assertEquals( HtmlTools.escapeHTML( "\u0159", false ), "ř" );
59 assertEquals( HtmlTools.escapeHTML( "\uD835\uDFED", false ), "𝟭" );
60 }
61
62
63
64
65 public void testUnescapeHTML()
66 {
67 assertNull( HtmlTools.unescapeHTML( null ) );
68 assertEquals( "", HtmlTools.unescapeHTML( "" ) );
69 assertEquals( "\u0009", HtmlTools.unescapeHTML( "\u0009" ) );
70 assertEquals( "\u0001", HtmlTools.unescapeHTML( "\u0001" ) );
71 assertEquals( "<", HtmlTools.unescapeHTML( "<" ) );
72 assertEquals( ">", HtmlTools.unescapeHTML( ">" ) );
73 assertEquals( "&", HtmlTools.unescapeHTML( "&" ) );
74 assertEquals( "\"", HtmlTools.unescapeHTML( """ ) );
75 assertEquals( "'", HtmlTools.unescapeHTML( "'" ) );
76 assertEquals( "\'", HtmlTools.unescapeHTML( "'", true ) );
77 assertEquals( "&", HtmlTools.unescapeHTML( "&amp;" ) );
78 assertEquals( "<Français>", HtmlTools.unescapeHTML( "&lt;Fran&ccedil;ais&gt;" ) );
79 assertEquals( "\u0159", HtmlTools.unescapeHTML( "ř" ) );
80 assertEquals( "\uD808\uDF45", HtmlTools.unescapeHTML( "𒍅" ) );
81 assertEquals( "\uD835\uDFED", HtmlTools.unescapeHTML( "𝟭" ) );
82 assertEquals( "\uD808\uDF45\uD835\uDFED", HtmlTools.unescapeHTML( "𒍅𝟭" ) );
83 assertEquals( "𝟭 𝟭", HtmlTools.unescapeHTML( "𝟭 𝟭" ) );
84 assertEquals( "𝟭 \uD835\uDFED", HtmlTools.unescapeHTML( "𝟭 𝟭" ) );
85 assertEquals( "&#xQWER;", HtmlTools.unescapeHTML( "&#xQWER;" ) );
86 assertEquals( "\u00E5", HtmlTools.unescapeHTML( "å" ) );
87 assertEquals( "<>&\"\u00E5\u0159\uD835\uDFED",
88 HtmlTools.unescapeHTML( "<>&"åř𝟭" ) );
89 }
90
91
92
93
94 public void testEncodeId()
95 {
96 assertEquals( HtmlTools.encodeId( null ), null );
97 assertEquals( HtmlTools.encodeId( "" ), "a" );
98 assertEquals( HtmlTools.encodeId( " " ), "a" );
99 assertEquals( HtmlTools.encodeId( " _ " ), "a_" );
100 assertEquals( HtmlTools.encodeId( "1" ), "a1" );
101 assertEquals( HtmlTools.encodeId( "1anchor" ), "a1anchor" );
102 assertEquals( HtmlTools.encodeId( "_anchor" ), "a_anchor" );
103 assertEquals( HtmlTools.encodeId( "a b-c123 " ), "a_b-c123" );
104 assertEquals( HtmlTools.encodeId( " anchor" ), "anchor" );
105 assertEquals( HtmlTools.encodeId( "myAnchor" ), "myAnchor" );
106 assertEquals( HtmlTools.encodeId( "H\u00E5kon" ), "Hkon" );
107 assertEquals( HtmlTools.encodeId( "Theu\u00DFl" ), "Theul" );
108 }
109
110
111
112
113
114
115 public void testEncodeURL()
116 throws Exception
117 {
118 assertNull( HtmlTools.encodeURL( null ) );
119 assertEquals( HtmlTools.encodeURL( "" ), "" );
120 assertEquals( HtmlTools.encodeURL( "http://www.example.com/?This is a simple test." ),
121 "http://www.example.com/?This%20is%20a%20simple%20test." );
122
123 assertEquals( HtmlTools.encodeURL( "http://www.example.com/?This is a simple & short test." ),
124 "http://www.example.com/?This%20is%20a%20simple%20&%20short%20test." );
125
126 String url = "\uD808\uDF45";
127 assertEquals( HtmlTools.encodeURL( url ), URLEncoder.encode( url, "UTF-8" ).toLowerCase( Locale.ENGLISH ) );
128 }
129
130
131
132
133 public void testIsId()
134 {
135 assertFalse( HtmlTools.isId( null ) );
136 assertFalse( HtmlTools.isId( "" ) );
137 assertFalse( HtmlTools.isId( " " ) );
138 assertFalse( HtmlTools.isId( " _ " ) );
139 assertFalse( HtmlTools.isId( "1" ) );
140 assertFalse( HtmlTools.isId( "1anchor" ) );
141 assertFalse( HtmlTools.isId( "_anchor" ) );
142 assertFalse( HtmlTools.isId( "a b-c123 " ) );
143 assertFalse( HtmlTools.isId( " anchor" ) );
144 assertTrue( HtmlTools.isId( "myAnchor" ) );
145 assertTrue( HtmlTools.isId( "a_" ) );
146 assertTrue( HtmlTools.isId( "a-" ) );
147 assertTrue( HtmlTools.isId( "a:" ) );
148 assertTrue( HtmlTools.isId( "a." ) );
149 assertFalse( HtmlTools.isId( "Theu\u00DFl" ) );
150 }
151
152
153
154
155 public void testGetHtmlTag()
156 {
157 assertNull( HtmlTools.getHtmlTag( null ) );
158 assertNull( HtmlTools.getHtmlTag( "" ) );
159 assertNull( HtmlTools.getHtmlTag( "weirdHtmlTag" ) );
160 assertNotNull( HtmlTools.getHtmlTag( "strong" ) );
161 }
162 }