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