View Javadoc
1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one
3    * or more contributor license agreements.  See the NOTICE file
4    * distributed with this work for additional information
5    * regarding copyright ownership.  The ASF licenses this file
6    * to you under the Apache License, Version 2.0 (the
7    * "License"); you may not use this file except in compliance
8    * with the License.  You may obtain a copy of the License at
9    *
10   *   http://www.apache.org/licenses/LICENSE-2.0
11   *
12   * Unless required by applicable law or agreed to in writing,
13   * software distributed under the License is distributed on an
14   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15   * KIND, either express or implied.  See the License for the
16   * specific language governing permissions and limitations
17   * under the License.
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   * @author ltheussl
45   */
46  @SuppressWarnings("MethodLength")
47  public class NestedItemsVerifier extends AbstractVerifier {
48      /** {@inheritDoc} */
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          // Verify link
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          // Unordered lists
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         // Ordered lists
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         // Definition lists
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 }