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