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