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
35 import java.util.Iterator;
36
37
38
39
40
41 public class FaqVerifier
42 extends AbstractVerifier
43 {
44
45 public void verify( String file )
46 throws Exception
47 {
48 HtmlPage page = htmlPage( file );
49 assertNotNull( page );
50
51 HtmlElement element = page.getHtmlElementById( "contentBox" );
52 assertNotNull( element );
53 HtmlDivision division = (HtmlDivision) element;
54 assertNotNull( division );
55
56 Iterator<HtmlElement> elementIterator = division.getHtmlElementDescendants().iterator();
57
58
59
60
61
62 HtmlDivision div = (HtmlDivision) elementIterator.next();
63 assertEquals( "section", div.getAttribute( "class" ) );
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.getFirstChild().asText().trim() );
81
82 HtmlListItem li = (HtmlListItem) elementIterator.next();
83 assertEquals( "One stupid question & a silly answer?", li.getFirstChild().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.getFirstChild().asText().trim() );
99
100 li = (HtmlListItem) elementIterator.next();
101 assertNotNull( li );
102 assertEquals( "How do I disable a report on my site?", li.getFirstChild().asText().trim() );
103
104 a = (HtmlAnchor) elementIterator.next();
105 assertEquals( "#disable-reports", a.getAttribute( "href" ) );
106
107 div = (HtmlDivision) elementIterator.next();
108 assertEquals( "section", div.getAttribute( "class" ) );
109
110 h2 = (HtmlHeading2) elementIterator.next();
111 assertEquals( "Contributing", h2.asText().trim() );
112
113 a = (HtmlAnchor) elementIterator.next();
114 assertEquals( "Contributing", a.getAttribute( "name" ) );
115
116 HtmlDefinitionList dl = (HtmlDefinitionList) elementIterator.next();
117
118 HtmlDefinitionTerm dt = (HtmlDefinitionTerm) elementIterator.next();
119 assertEquals( "One stupid question & a silly answer?", dt.getFirstChild().asText().trim() );
120
121 a = (HtmlAnchor) elementIterator.next();
122 assertEquals( "stupid-question", a.getAttribute( "name" ) );
123
124 element = elementIterator.next();
125 assertEquals( "b", element.getTagName() );
126 assertEquals( "stupid", element.asText().trim() );
127
128 HtmlDefinitionDescription dd = (HtmlDefinitionDescription) elementIterator.next();
129
130 p = (HtmlParagraph) elementIterator.next();
131
132 a = (HtmlAnchor) elementIterator.next();
133 assertEquals( "#Using_Maven", a.getAttribute( "href" ) );
134 assertEquals( "local link", a.asText().trim() );
135
136 a = (HtmlAnchor) elementIterator.next();
137 assertEquals( "./cdc.html", a.getAttribute( "href" ) );
138 assertEquals( "source document", a.asText().trim() );
139
140 a = (HtmlAnchor) elementIterator.next();
141 assertEquals( "http://maven.apache.org/?l=a&m=b", a.getAttribute( "href" ) );
142 assertEquals( "external link", a.asText().trim() );
143
144 element = elementIterator.next();
145 assertEquals( "i", element.getTagName() );
146 assertEquals( "italic", element.asText().trim() );
147
148 element = elementIterator.next();
149 assertEquals( "b", element.getTagName() );
150 assertEquals( "non-US-ASCII characters: àéèç", element.asText().trim() );
151
152 p = (HtmlParagraph) elementIterator.next();
153 assertEquals( "right", p.getAttribute( "align" ) );
154
155 a = (HtmlAnchor) elementIterator.next();
156 assertEquals( "#top", a.getAttribute( "href" ) );
157 assertEquals( "[top]", a.asText().trim() );
158
159
160 div = (HtmlDivision) elementIterator.next();
161 assertEquals( "section", div.getAttribute( "class" ) );
162
163 h2 = (HtmlHeading2) elementIterator.next();
164 assertEquals( "Using Maven", h2.asText().trim() );
165
166 a = (HtmlAnchor) elementIterator.next();
167 assertEquals( "Using_Maven", a.getAttribute( "name" ) );
168
169 dl = (HtmlDefinitionList) elementIterator.next();
170
171 dt = (HtmlDefinitionTerm) elementIterator.next();
172 assertEquals( "How do I disable a report on my site?", dt.getFirstChild().asText().trim() );
173
174 a = (HtmlAnchor) elementIterator.next();
175 assertEquals( "disable-reports", a.getAttribute( "name" ) );
176
177 dd = (HtmlDefinitionDescription) elementIterator.next();
178
179 p = (HtmlParagraph) elementIterator.next();
180
181 element = elementIterator.next();
182 assertEquals( "tt", element.getTagName() );
183 assertEquals( "<source></source>", element.asText().trim() );
184
185 div = (HtmlDivision) elementIterator.next();
186 assertEquals( "source", div.getAttribute( "class" ) );
187
188 HtmlPreformattedText pre = (HtmlPreformattedText) elementIterator.next();
189 assertEquals( "<source>1.5</source>", pre.asText().trim() );
190
191 p = (HtmlParagraph) elementIterator.next();
192 assertEquals( "right", p.getAttribute( "align" ) );
193
194 a = (HtmlAnchor) elementIterator.next();
195 assertEquals( "#top", a.getAttribute( "href" ) );
196 assertEquals( "[top]", a.asText().trim() );
197
198 assertFalse( elementIterator.hasNext() );
199 }
200 }