1 package org.apache.maven.doxia.siterenderer;
2
3 import java.util.Iterator;
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 import com.gargoylesoftware.htmlunit.html.HtmlAnchor;
25 import com.gargoylesoftware.htmlunit.html.HtmlDefinitionDescription;
26 import com.gargoylesoftware.htmlunit.html.HtmlDefinitionList;
27 import com.gargoylesoftware.htmlunit.html.HtmlDefinitionTerm;
28 import com.gargoylesoftware.htmlunit.html.HtmlDivision;
29 import com.gargoylesoftware.htmlunit.html.HtmlElement;
30 import com.gargoylesoftware.htmlunit.html.HtmlHeading2;
31 import com.gargoylesoftware.htmlunit.html.HtmlHeading4;
32 import com.gargoylesoftware.htmlunit.html.HtmlListItem;
33 import com.gargoylesoftware.htmlunit.html.HtmlOrderedList;
34 import com.gargoylesoftware.htmlunit.html.HtmlPage;
35 import com.gargoylesoftware.htmlunit.html.HtmlParagraph;
36 import com.gargoylesoftware.htmlunit.html.HtmlSection;
37 import com.gargoylesoftware.htmlunit.html.HtmlUnorderedList;
38
39
40
41
42
43 public class NestedItemsVerifier
44 extends AbstractVerifier
45 {
46
47 public void verify( String file )
48 throws Exception
49 {
50 HtmlPage page = htmlPage( file );
51 assertNotNull( page );
52
53 HtmlElement element = page.getHtmlElementById( "contentBox" );
54 assertNotNull( element );
55 HtmlDivision division = (HtmlDivision) element;
56 assertNotNull( division );
57
58 Iterator<HtmlElement> elementIterator = division.getHtmlElementDescendants().iterator();
59
60
61
62
63
64 HtmlSection section = (HtmlSection) elementIterator.next();
65 assertNotNull( section );
66
67 HtmlHeading2 h2 = (HtmlHeading2) elementIterator.next();
68 assertNotNull( h2 );
69 assertEquals( "List Section", h2.asText().trim() );
70
71 HtmlAnchor a = (HtmlAnchor) elementIterator.next();
72 assertNotNull( a );
73 assertEquals( "List_Section", a.getAttribute( "name" ) );
74
75
76
77
78
79 section = (HtmlSection) elementIterator.next();
80 assertNotNull( section );
81
82 section = (HtmlSection) elementIterator.next();
83 assertNotNull( section );
84
85 HtmlHeading4 h4 = (HtmlHeading4) elementIterator.next();
86 assertNotNull( h4 );
87 assertEquals( "Unordered lists", h4.asText().trim() );
88
89 a = (HtmlAnchor) elementIterator.next();
90 assertNotNull( a );
91 assertEquals( "Unordered_lists", a.getAttribute( "name" ) );
92
93 HtmlParagraph p = (HtmlParagraph) elementIterator.next();
94 assertNotNull( p );
95 assertEquals( "Below is an unordered list, followed by six paragraphs.", p.asText().trim() );
96
97 HtmlUnorderedList ul = (HtmlUnorderedList) elementIterator.next();
98 assertNotNull( ul );
99
100 HtmlListItem li = (HtmlListItem) elementIterator.next();
101 assertNotNull( li );
102 assertEquals( "Item 1.", li.getFirstChild().asText().trim() );
103
104 ul = (HtmlUnorderedList) elementIterator.next();
105 assertNotNull( ul );
106
107 li = (HtmlListItem) elementIterator.next();
108 assertNotNull( li );
109 p = (HtmlParagraph) elementIterator.next();
110 assertNotNull( p );
111 assertEquals( "Item 11.", p.getFirstChild().asText().trim() );
112 li = (HtmlListItem) elementIterator.next();
113 assertNotNull( li );
114 p = (HtmlParagraph) elementIterator.next();
115 assertNotNull( p );
116 assertEquals( "Item 12.", p.getFirstChild().asText().trim() );
117 li = (HtmlListItem) elementIterator.next();
118 assertNotNull( li );
119 assertEquals( "Item 13.", li.getFirstChild().asText().trim() );
120 li = (HtmlListItem) elementIterator.next();
121 assertNotNull( li );
122 assertEquals( "Item 14.", li.getFirstChild().asText().trim() );
123 li = (HtmlListItem) elementIterator.next();
124 assertNotNull( li );
125 assertEquals( "Item 2.", li.getFirstChild().asText().trim() );
126 li = (HtmlListItem) elementIterator.next();
127 assertNotNull( li );
128 assertEquals( "Item 3.", li.getFirstChild().asText().trim() );
129 li = (HtmlListItem) elementIterator.next();
130 assertNotNull( li );
131 assertEquals( "Item 4.", li.getFirstChild().asText().trim() );
132
133 ul = (HtmlUnorderedList) elementIterator.next();
134 assertNotNull( ul );
135
136 li = (HtmlListItem) elementIterator.next();
137 assertNotNull( li );
138 assertEquals( "Item 41.", li.getFirstChild().asText().trim() );
139 li = (HtmlListItem) elementIterator.next();
140 assertNotNull( li );
141 assertEquals( "Item 42.", li.getFirstChild().asText().trim() );
142 li = (HtmlListItem) elementIterator.next();
143 assertNotNull( li );
144 assertEquals( "Item 43.", li.getFirstChild().asText().trim() );
145 li = (HtmlListItem) elementIterator.next();
146 assertNotNull( li );
147 assertEquals( "Item 44.", li.getFirstChild().asText().trim() );
148
149 p = (HtmlParagraph) elementIterator.next();
150 assertNotNull( p );
151 assertEquals( "Paragraph 1 below list.", p.asText().trim() );
152 p = (HtmlParagraph) elementIterator.next();
153 assertNotNull( p );
154 assertEquals( "Paragraph 2 below list.", p.asText().trim() );
155 p = (HtmlParagraph) elementIterator.next();
156 assertNotNull( p );
157 assertEquals( "Paragraph 3 below list.", p.asText().trim() );
158 p = (HtmlParagraph) elementIterator.next();
159 assertNotNull( p );
160 assertEquals( "Paragraph 4 below list.", p.asText().trim() );
161 p = (HtmlParagraph) elementIterator.next();
162 assertNotNull( p );
163 assertEquals( "Paragraph 5 below list.", p.asText().trim() );
164 p = (HtmlParagraph) elementIterator.next();
165 assertNotNull( p );
166 assertEquals( "Paragraph 6 below list.", p.asText().trim() );
167
168
169
170
171
172 section = (HtmlSection) elementIterator.next();
173 assertNotNull( section );
174
175 h4 = (HtmlHeading4) elementIterator.next();
176 assertNotNull( h4 );
177 assertEquals( "Ordered lists", h4.asText().trim() );
178
179 a = (HtmlAnchor) elementIterator.next();
180 assertNotNull( a );
181 assertEquals( "Ordered_lists", a.getAttribute( "name" ) );
182
183 p = (HtmlParagraph) elementIterator.next();
184 assertNotNull( p );
185 assertEquals( "Below is an ordered list, followed by six paragraphs.", p.asText().trim() );
186
187 HtmlOrderedList ol = (HtmlOrderedList) elementIterator.next();
188 assertNotNull( ol );
189
190 li = (HtmlListItem) elementIterator.next();
191 assertNotNull( li );
192 assertEquals( "Item 1.", li.getFirstChild().asText().trim() );
193
194 ol = (HtmlOrderedList) elementIterator.next();
195 assertNotNull( ol );
196
197 li = (HtmlListItem) elementIterator.next();
198 assertNotNull( li );
199 assertEquals( "Item 11.", li.getFirstChild().asText().trim() );
200 li = (HtmlListItem) elementIterator.next();
201 assertNotNull( li );
202 assertEquals( "Item 12.", li.getFirstChild().asText().trim() );
203 li = (HtmlListItem) elementIterator.next();
204 assertNotNull( li );
205 assertEquals( "Item 13.", li.getFirstChild().asText().trim() );
206 li = (HtmlListItem) elementIterator.next();
207 assertNotNull( li );
208 assertEquals( "Item 14.", li.getFirstChild().asText().trim() );
209 li = (HtmlListItem) elementIterator.next();
210 assertNotNull( li );
211 assertEquals( "Item 2.", li.getFirstChild().asText().trim() );
212 li = (HtmlListItem) elementIterator.next();
213 assertNotNull( li );
214 assertEquals( "Item 3.", li.getFirstChild().asText().trim() );
215 li = (HtmlListItem) elementIterator.next();
216 assertNotNull( li );
217 assertEquals( "Item 4.", li.getFirstChild().asText().trim() );
218
219 ol = (HtmlOrderedList) elementIterator.next();
220 assertNotNull( ol );
221
222 li = (HtmlListItem) elementIterator.next();
223 assertNotNull( li );
224 assertEquals( "Item 41.", li.getFirstChild().asText().trim() );
225 li = (HtmlListItem) elementIterator.next();
226 assertNotNull( li );
227 assertEquals( "Item 42.", li.getFirstChild().asText().trim() );
228 li = (HtmlListItem) elementIterator.next();
229 assertNotNull( li );
230 assertEquals( "Item 43.", li.getFirstChild().asText().trim() );
231 li = (HtmlListItem) elementIterator.next();
232 assertNotNull( li );
233 assertEquals( "Item 44.", li.getFirstChild().asText().trim() );
234
235 p = (HtmlParagraph) elementIterator.next();
236 assertNotNull( p );
237 assertEquals( "Paragraph 1 below list.", p.asText().trim() );
238 p = (HtmlParagraph) elementIterator.next();
239 assertNotNull( p );
240 assertEquals( "Paragraph 2 below list.", p.asText().trim() );
241 p = (HtmlParagraph) elementIterator.next();
242 assertNotNull( p );
243 assertEquals( "Paragraph 3 below list.", p.asText().trim() );
244 p = (HtmlParagraph) elementIterator.next();
245 assertNotNull( p );
246 assertEquals( "Paragraph 4 below list.", p.asText().trim() );
247 p = (HtmlParagraph) elementIterator.next();
248 assertNotNull( p );
249 assertEquals( "Paragraph 5 below list.", p.asText().trim() );
250 p = (HtmlParagraph) elementIterator.next();
251 assertNotNull( p );
252 assertEquals( "Paragraph 6 below list.", p.asText().trim() );
253
254
255
256
257
258 section = (HtmlSection) elementIterator.next();
259 assertNotNull( section );
260
261 h4 = (HtmlHeading4) elementIterator.next();
262 assertNotNull( h4 );
263 assertEquals( "Definition lists", h4.asText().trim() );
264
265 a = (HtmlAnchor) elementIterator.next();
266 assertNotNull( a );
267 assertEquals( "Definition_lists", a.getAttribute( "name" ) );
268
269 p = (HtmlParagraph) elementIterator.next();
270 assertNotNull( p );
271 assertEquals( "Below is a definition list, followed by six paragraphs.", p.asText().trim() );
272
273 HtmlDefinitionList dl = (HtmlDefinitionList) elementIterator.next();
274 assertNotNull( dl );
275
276 HtmlDefinitionTerm dt = (HtmlDefinitionTerm) elementIterator.next();
277 assertNotNull( dt );
278 assertEquals( "Term 1.", dt.getFirstChild().asText().trim() );
279 HtmlDefinitionDescription dd = (HtmlDefinitionDescription) elementIterator.next();
280 assertNotNull( dd );
281 assertEquals( "Description 1.", dd.getFirstChild().asText().trim() );
282
283 dt = (HtmlDefinitionTerm) elementIterator.next();
284 assertNotNull( dt );
285 assertEquals( "Term 2.", dt.getFirstChild().asText().trim() );
286 dd = (HtmlDefinitionDescription) elementIterator.next();
287 assertNotNull( dd );
288 assertEquals( "Description 2.", dd.getFirstChild().asText().trim() );
289
290 dl = (HtmlDefinitionList) elementIterator.next();
291 assertNotNull( dl );
292 dt = (HtmlDefinitionTerm) elementIterator.next();
293 assertNotNull( dt );
294 assertEquals( "Term 21.", dt.getFirstChild().asText().trim() );
295 dd = (HtmlDefinitionDescription) elementIterator.next();
296 assertNotNull( dd );
297 assertEquals( "Description 21.", dd.getFirstChild().asText().trim() );
298
299 p = (HtmlParagraph) elementIterator.next();
300 assertNotNull( p );
301 assertEquals( "Paragraph 1 below list.", p.asText().trim() );
302 p = (HtmlParagraph) elementIterator.next();
303 assertNotNull( p );
304 assertEquals( "Paragraph 2 below list.", p.asText().trim() );
305 p = (HtmlParagraph) elementIterator.next();
306 assertNotNull( p );
307 assertEquals( "Paragraph 3 below list.", p.asText().trim() );
308 p = (HtmlParagraph) elementIterator.next();
309 assertNotNull( p );
310 assertEquals( "Paragraph 4 below list.", p.asText().trim() );
311 p = (HtmlParagraph) elementIterator.next();
312 assertNotNull( p );
313 assertEquals( "Paragraph 5 below list.", p.asText().trim() );
314 p = (HtmlParagraph) elementIterator.next();
315 assertNotNull( p );
316 assertEquals( "Paragraph 6 below list.", p.asText().trim() );
317
318 assertFalse( elementIterator.hasNext() );
319 }
320 }