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