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