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