1 package org.apache.maven.doxia.siterenderer;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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.HtmlListItem;
30 import com.gargoylesoftware.htmlunit.html.HtmlOrderedList;
31 import com.gargoylesoftware.htmlunit.html.HtmlPage;
32 import com.gargoylesoftware.htmlunit.html.HtmlParagraph;
33 import com.gargoylesoftware.htmlunit.html.HtmlPreformattedText;
34 import com.gargoylesoftware.htmlunit.html.HtmlSection;
35
36 import java.util.Iterator;
37
38
39
40
41
42 public class FaqVerifier
43 extends AbstractVerifier
44 {
45
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
61
62
63 HtmlSection section = (HtmlSection) elementIterator.next();
64
65 HtmlHeading2 h2 = (HtmlHeading2) elementIterator.next();
66 assertEquals( "Oft Asked Questions", h2.asText().trim() );
67
68 HtmlAnchor a = (HtmlAnchor) elementIterator.next();
69 assertEquals( a.getAttribute( "name" ), "Oft_Asked_Questions" );
70
71 a = (HtmlAnchor) elementIterator.next();
72 assertEquals( "top", a.getAttribute( "name" ) );
73
74 HtmlParagraph p = (HtmlParagraph) elementIterator.next();
75 element = elementIterator.next();
76 assertEquals( "b", element.getTagName() );
77 assertEquals( "Contributing", element.asText().trim() );
78
79 HtmlOrderedList ol = (HtmlOrderedList) elementIterator.next();
80 assertEquals( "One stupid question & a silly answer?", ol.getFirstElementChild().asText().trim() );
81
82 HtmlListItem li = (HtmlListItem) elementIterator.next();
83 assertEquals( "One stupid question & a silly answer?", li.getFirstElementChild().asText().trim() );
84
85 a = (HtmlAnchor) elementIterator.next();
86 assertEquals( "#stupid-question", a.getAttribute( "href" ) );
87
88 element = elementIterator.next();
89 assertEquals( "b", element.getTagName() );
90 assertEquals( "stupid", element.asText().trim() );
91
92 p = (HtmlParagraph) elementIterator.next();
93 element = elementIterator.next();
94 assertEquals( "b", element.getTagName() );
95 assertEquals( "Using Maven", element.asText().trim() );
96
97 ol = (HtmlOrderedList) elementIterator.next();
98 assertEquals( "How do I disable a report on my site?", ol.getFirstElementChild().asText().trim() );
99
100 li = (HtmlListItem) elementIterator.next();
101 assertNotNull( li );
102 assertEquals( "How do I disable a report on my site?", li.getFirstElementChild().asText().trim() );
103
104 a = (HtmlAnchor) elementIterator.next();
105 assertEquals( "#disable-reports", a.getAttribute( "href" ) );
106
107 section = (HtmlSection) elementIterator.next();
108
109 h2 = (HtmlHeading2) elementIterator.next();
110 assertEquals( "Contributing", h2.asText().trim() );
111
112 a = (HtmlAnchor) elementIterator.next();
113 assertEquals( "Contributing", a.getAttribute( "name" ) );
114
115 HtmlDefinitionList dl = (HtmlDefinitionList) elementIterator.next();
116
117 HtmlDefinitionTerm dt = (HtmlDefinitionTerm) elementIterator.next();
118 assertEquals( "One stupid question & a silly answer?", dt.getFirstChild().asText().trim() );
119
120 a = (HtmlAnchor) elementIterator.next();
121 assertEquals( "stupid-question", a.getAttribute( "name" ) );
122
123 element = elementIterator.next();
124 assertEquals( "b", element.getTagName() );
125 assertEquals( "stupid", element.asText().trim() );
126
127 HtmlDefinitionDescription dd = (HtmlDefinitionDescription) elementIterator.next();
128
129 p = (HtmlParagraph) elementIterator.next();
130
131 a = (HtmlAnchor) elementIterator.next();
132 assertEquals( "#Using_Maven", a.getAttribute( "href" ) );
133 assertEquals( "local link", a.asText().trim() );
134
135 a = (HtmlAnchor) elementIterator.next();
136 assertEquals( "./cdc.html", a.getAttribute( "href" ) );
137 assertEquals( "source document", a.asText().trim() );
138
139 a = (HtmlAnchor) elementIterator.next();
140 assertEquals( "http://maven.apache.org/?l=a&m=b", a.getAttribute( "href" ) );
141 assertEquals( "external link", a.asText().trim() );
142
143 element = elementIterator.next();
144 assertEquals( "i", element.getTagName() );
145 assertEquals( "italic", element.asText().trim() );
146
147 element = elementIterator.next();
148 assertEquals( "b", element.getTagName() );
149 assertEquals( "non-US-ASCII characters: àéèç", element.asText().trim() );
150
151 p = (HtmlParagraph) elementIterator.next();
152 assertEquals( "right", p.getAttribute( "align" ) );
153
154 a = (HtmlAnchor) elementIterator.next();
155 assertEquals( "#top", a.getAttribute( "href" ) );
156 assertEquals( "[top]", a.asText().trim() );
157
158
159 section = (HtmlSection) elementIterator.next();
160
161 h2 = (HtmlHeading2) elementIterator.next();
162 assertEquals( "Using Maven", h2.asText().trim() );
163
164 a = (HtmlAnchor) elementIterator.next();
165 assertEquals( "Using_Maven", a.getAttribute( "name" ) );
166
167 dl = (HtmlDefinitionList) elementIterator.next();
168
169 dt = (HtmlDefinitionTerm) elementIterator.next();
170 assertEquals( "How do I disable a report on my site?", dt.getFirstChild().asText().trim() );
171
172 a = (HtmlAnchor) elementIterator.next();
173 assertEquals( "disable-reports", a.getAttribute( "name" ) );
174
175 dd = (HtmlDefinitionDescription) elementIterator.next();
176
177 p = (HtmlParagraph) elementIterator.next();
178
179 element = elementIterator.next();
180 assertEquals( "code", element.getTagName() );
181 assertEquals( "<source></source>", element.asText().trim() );
182
183 HtmlDivision div = (HtmlDivision) elementIterator.next();
184 assertEquals( "source", div.getAttribute( "class" ) );
185
186 HtmlPreformattedText pre = (HtmlPreformattedText) elementIterator.next();
187 assertEquals( "<source>1.5</source>", pre.asText().trim() );
188
189 p = (HtmlParagraph) elementIterator.next();
190 assertEquals( "right", p.getAttribute( "align" ) );
191
192 a = (HtmlAnchor) elementIterator.next();
193 assertEquals( "#top", a.getAttribute( "href" ) );
194 assertEquals( "[top]", a.asText().trim() );
195
196 assertFalse( elementIterator.hasNext() );
197 }
198 }