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