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