View Javadoc
1   package org.apache.maven.doxia.siterenderer;
2   
3   /*
4    * Licensed to the Apache Software Foundation (ASF) under one
5    * or more contributor license agreements.  See the NOTICE file
6    * distributed with this work for additional information
7    * regarding copyright ownership.  The ASF licenses this file
8    * to you under the Apache License, Version 2.0 (the
9    * "License"); you may not use this file except in compliance
10   * with the License.  You may obtain a copy of the License at
11   *
12   *   http://www.apache.org/licenses/LICENSE-2.0
13   *
14   * Unless required by applicable law or agreed to in writing,
15   * software distributed under the License is distributed on an
16   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
17   * KIND, either express or implied.  See the License for the
18   * specific language governing permissions and limitations
19   * under the License.
20   */
21  
22  import com.gargoylesoftware.htmlunit.html.HtmlAnchor;
23  import com.gargoylesoftware.htmlunit.html.HtmlDefinitionDescription;
24  import com.gargoylesoftware.htmlunit.html.HtmlDefinitionList;
25  import com.gargoylesoftware.htmlunit.html.HtmlDefinitionTerm;
26  import com.gargoylesoftware.htmlunit.html.HtmlDivision;
27  import com.gargoylesoftware.htmlunit.html.HtmlElement;
28  import com.gargoylesoftware.htmlunit.html.HtmlHeading2;
29  import com.gargoylesoftware.htmlunit.html.HtmlHeading4;
30  import com.gargoylesoftware.htmlunit.html.HtmlListItem;
31  import com.gargoylesoftware.htmlunit.html.HtmlOrderedList;
32  import com.gargoylesoftware.htmlunit.html.HtmlPage;
33  import com.gargoylesoftware.htmlunit.html.HtmlParagraph;
34  import com.gargoylesoftware.htmlunit.html.HtmlUnorderedList;
35  
36  import java.util.Iterator;
37  
38  /**
39   *
40   * @author ltheussl
41   */
42  public class NestedItemsVerifier
43      extends AbstractVerifier
44  {
45      /** {@inheritDoc} */
46      public void verify( String file )
47              throws Exception
48      {
49          HtmlPage page = htmlPage( file );
50          assertNotNull( page );
51  
52          HtmlElement element = page.getHtmlElementById( "contentBox" );
53          assertNotNull( element );
54          HtmlDivision division = (HtmlDivision) element;
55          assertNotNull( division );
56  
57          Iterator<HtmlElement> elementIterator = division.getHtmlElementDescendants().iterator();
58  
59          // ----------------------------------------------------------------------
60          // Verify link
61          // ----------------------------------------------------------------------
62  
63          HtmlDivision div = (HtmlDivision) elementIterator.next();
64          assertNotNull( div );
65          assertEquals( "section", div.getAttribute( "class" ) );
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          div = (HtmlDivision) elementIterator.next();
79          assertNotNull( div );
80          assertEquals( "section", div.getAttribute( "class" ) );
81  
82          div = (HtmlDivision) elementIterator.next();
83          assertNotNull( div );
84          assertEquals( "section", div.getAttribute( "class" ) );
85  
86          HtmlHeading4 h4 = (HtmlHeading4) elementIterator.next();
87          assertNotNull( h4 );
88          assertEquals( "Unordered lists", h4.asText().trim() );
89  
90          a = (HtmlAnchor) elementIterator.next();
91          assertNotNull( a );
92          assertEquals( "Unordered_lists", a.getAttribute( "name" ) );
93  
94          HtmlParagraph p = (HtmlParagraph) elementIterator.next();
95          assertNotNull( p );
96          assertEquals( "Below is an unordered list, followed by six paragraphs.", p.asText().trim() );
97  
98          HtmlUnorderedList ul = (HtmlUnorderedList) elementIterator.next();
99          assertNotNull( ul );
100 
101         HtmlListItem li = (HtmlListItem) elementIterator.next();
102         assertNotNull( li );
103         assertEquals( "Item 1.", li.getFirstChild().asText().trim() );
104 
105         ul = (HtmlUnorderedList) elementIterator.next();
106         assertNotNull( ul );
107 
108         li = (HtmlListItem) elementIterator.next();
109         assertNotNull( li );
110         p = (HtmlParagraph) elementIterator.next();
111         assertNotNull( p );
112         assertEquals( "Item 11.", p.getFirstChild().asText().trim() );
113         li = (HtmlListItem) elementIterator.next();
114         assertNotNull( li );
115         p = (HtmlParagraph) elementIterator.next();
116         assertNotNull( p );
117         assertEquals( "Item 12.", p.getFirstChild().asText().trim() );
118         li = (HtmlListItem) elementIterator.next();
119         assertNotNull( li );
120         assertEquals( "Item 13.", li.getFirstChild().asText().trim() );
121         li = (HtmlListItem) elementIterator.next();
122         assertNotNull( li );
123         assertEquals( "Item 14.", li.getFirstChild().asText().trim() );
124         li = (HtmlListItem) elementIterator.next();
125         assertNotNull( li );
126         assertEquals( "Item 2.", li.getFirstChild().asText().trim() );
127         li = (HtmlListItem) elementIterator.next();
128         assertNotNull( li );
129         assertEquals( "Item 3.", li.getFirstChild().asText().trim() );
130         li = (HtmlListItem) elementIterator.next();
131         assertNotNull( li );
132         assertEquals( "Item 4.", li.getFirstChild().asText().trim() );
133 
134         ul = (HtmlUnorderedList) elementIterator.next();
135         assertNotNull( ul );
136 
137         li = (HtmlListItem) elementIterator.next();
138         assertNotNull( li );
139         assertEquals( "Item 41.", li.getFirstChild().asText().trim() );
140         li = (HtmlListItem) elementIterator.next();
141         assertNotNull( li );
142         assertEquals( "Item 42.", li.getFirstChild().asText().trim() );
143         li = (HtmlListItem) elementIterator.next();
144         assertNotNull( li );
145         assertEquals( "Item 43.", li.getFirstChild().asText().trim() );
146         li = (HtmlListItem) elementIterator.next();
147         assertNotNull( li );
148         assertEquals( "Item 44.", li.getFirstChild().asText().trim() );
149 
150         p = (HtmlParagraph) elementIterator.next();
151         assertNotNull( p );
152         assertEquals( "Paragraph 1 below list.", p.asText().trim() );
153         p = (HtmlParagraph) elementIterator.next();
154         assertNotNull( p );
155         assertEquals( "Paragraph 2 below list.", p.asText().trim() );
156         p = (HtmlParagraph) elementIterator.next();
157         assertNotNull( p );
158         assertEquals( "Paragraph 3 below list.", p.asText().trim() );
159         p = (HtmlParagraph) elementIterator.next();
160         assertNotNull( p );
161         assertEquals( "Paragraph 4 below list.", p.asText().trim() );
162         p = (HtmlParagraph) elementIterator.next();
163         assertNotNull( p );
164         assertEquals( "Paragraph 5 below list.", p.asText().trim() );
165         p = (HtmlParagraph) elementIterator.next();
166         assertNotNull( p );
167         assertEquals( "Paragraph 6 below list.", p.asText().trim() );
168 
169         // ----------------------------------------------------------------------
170         // Ordered lists
171         // ----------------------------------------------------------------------
172         div = (HtmlDivision) elementIterator.next();
173         assertNotNull( div );
174         assertEquals( "section", div.getAttribute( "class" ) );
175 
176         h4 = (HtmlHeading4) elementIterator.next();
177         assertNotNull( h4 );
178         assertEquals( "Ordered lists", h4.asText().trim() );
179 
180         a = (HtmlAnchor) elementIterator.next();
181         assertNotNull( a );
182         assertEquals( "Ordered_lists", a.getAttribute( "name" ) );
183 
184         p = (HtmlParagraph) elementIterator.next();
185         assertNotNull( p );
186         assertEquals( "Below is an ordered list, followed by six paragraphs.", p.asText().trim() );
187 
188         HtmlOrderedList ol = (HtmlOrderedList) elementIterator.next();
189         assertNotNull( ol );
190 
191         li = (HtmlListItem) elementIterator.next();
192         assertNotNull( li );
193         assertEquals( "Item 1.", li.getFirstChild().asText().trim() );
194 
195         ol = (HtmlOrderedList) elementIterator.next();
196         assertNotNull( ol );
197 
198         li = (HtmlListItem) elementIterator.next();
199         assertNotNull( li );
200         assertEquals( "Item 11.", li.getFirstChild().asText().trim() );
201         li = (HtmlListItem) elementIterator.next();
202         assertNotNull( li );
203         assertEquals( "Item 12.", li.getFirstChild().asText().trim() );
204         li = (HtmlListItem) elementIterator.next();
205         assertNotNull( li );
206         assertEquals( "Item 13.", li.getFirstChild().asText().trim() );
207         li = (HtmlListItem) elementIterator.next();
208         assertNotNull( li );
209         assertEquals( "Item 14.", li.getFirstChild().asText().trim() );
210         li = (HtmlListItem) elementIterator.next();
211         assertNotNull( li );
212         assertEquals( "Item 2.", li.getFirstChild().asText().trim() );
213         li = (HtmlListItem) elementIterator.next();
214         assertNotNull( li );
215         assertEquals( "Item 3.", li.getFirstChild().asText().trim() );
216         li = (HtmlListItem) elementIterator.next();
217         assertNotNull( li );
218         assertEquals( "Item 4.", li.getFirstChild().asText().trim() );
219 
220         ol = (HtmlOrderedList) elementIterator.next();
221         assertNotNull( ol );
222 
223         li = (HtmlListItem) elementIterator.next();
224         assertNotNull( li );
225         assertEquals( "Item 41.", li.getFirstChild().asText().trim() );
226         li = (HtmlListItem) elementIterator.next();
227         assertNotNull( li );
228         assertEquals( "Item 42.", li.getFirstChild().asText().trim() );
229         li = (HtmlListItem) elementIterator.next();
230         assertNotNull( li );
231         assertEquals( "Item 43.", li.getFirstChild().asText().trim() );
232         li = (HtmlListItem) elementIterator.next();
233         assertNotNull( li );
234         assertEquals( "Item 44.", li.getFirstChild().asText().trim() );
235 
236         p = (HtmlParagraph) elementIterator.next();
237         assertNotNull( p );
238         assertEquals( "Paragraph 1 below list.", p.asText().trim() );
239         p = (HtmlParagraph) elementIterator.next();
240         assertNotNull( p );
241         assertEquals( "Paragraph 2 below list.", p.asText().trim() );
242         p = (HtmlParagraph) elementIterator.next();
243         assertNotNull( p );
244         assertEquals( "Paragraph 3 below list.", p.asText().trim() );
245         p = (HtmlParagraph) elementIterator.next();
246         assertNotNull( p );
247         assertEquals( "Paragraph 4 below list.", p.asText().trim() );
248         p = (HtmlParagraph) elementIterator.next();
249         assertNotNull( p );
250         assertEquals( "Paragraph 5 below list.", p.asText().trim() );
251         p = (HtmlParagraph) elementIterator.next();
252         assertNotNull( p );
253         assertEquals( "Paragraph 6 below list.", p.asText().trim() );
254 
255         // ----------------------------------------------------------------------
256         // Definition lists
257         // ----------------------------------------------------------------------
258         div = (HtmlDivision) elementIterator.next();
259         assertNotNull( div );
260         assertEquals( "section", div.getAttribute( "class" ) );
261 
262         h4 = (HtmlHeading4) elementIterator.next();
263         assertNotNull( h4 );
264         assertEquals( "Definition lists", h4.asText().trim() );
265 
266         a = (HtmlAnchor) elementIterator.next();
267         assertNotNull( a );
268         assertEquals( "Definition_lists", a.getAttribute( "name" ) );
269 
270         p = (HtmlParagraph) elementIterator.next();
271         assertNotNull( p );
272         assertEquals( "Below is a definition list, followed by six paragraphs.", p.asText().trim() );
273 
274         HtmlDefinitionList dl = (HtmlDefinitionList) elementIterator.next();
275         assertNotNull( dl );
276 
277         HtmlDefinitionTerm dt = (HtmlDefinitionTerm) elementIterator.next();
278         assertNotNull( dt );
279         assertEquals( "Term 1.", dt.getFirstChild().asText().trim() );
280         HtmlDefinitionDescription dd = (HtmlDefinitionDescription) elementIterator.next();
281         assertNotNull( dd );
282         assertEquals( "Description 1.", dd.getFirstChild().asText().trim() );
283 
284         dt = (HtmlDefinitionTerm) elementIterator.next();
285         assertNotNull( dt );
286         assertEquals( "Term 2.", dt.getFirstChild().asText().trim() );
287         dd = (HtmlDefinitionDescription) elementIterator.next();
288         assertNotNull( dd );
289         assertEquals( "Description 2.", dd.getFirstChild().asText().trim() );
290 
291         dl = (HtmlDefinitionList) elementIterator.next();
292         assertNotNull( dl );
293         dt = (HtmlDefinitionTerm) elementIterator.next();
294         assertNotNull( dt );
295         assertEquals( "Term 21.", dt.getFirstChild().asText().trim() );
296         dd = (HtmlDefinitionDescription) elementIterator.next();
297         assertNotNull( dd );
298         assertEquals( "Description 21.", dd.getFirstChild().asText().trim() );
299 
300         p = (HtmlParagraph) elementIterator.next();
301         assertNotNull( p );
302         assertEquals( "Paragraph 1 below list.", p.asText().trim() );
303         p = (HtmlParagraph) elementIterator.next();
304         assertNotNull( p );
305         assertEquals( "Paragraph 2 below list.", p.asText().trim() );
306         p = (HtmlParagraph) elementIterator.next();
307         assertNotNull( p );
308         assertEquals( "Paragraph 3 below list.", p.asText().trim() );
309         p = (HtmlParagraph) elementIterator.next();
310         assertNotNull( p );
311         assertEquals( "Paragraph 4 below list.", p.asText().trim() );
312         p = (HtmlParagraph) elementIterator.next();
313         assertNotNull( p );
314         assertEquals( "Paragraph 5 below list.", p.asText().trim() );
315         p = (HtmlParagraph) elementIterator.next();
316         assertNotNull( p );
317         assertEquals( "Paragraph 6 below list.", p.asText().trim() );
318 
319         assertFalse( elementIterator.hasNext() );
320     }
321 }