1 package org.apache.velocity.tools.generic;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import org.junit.*;
23 import static org.junit.Assert.*;
24 import java.net.URL;
25 import java.util.HashMap;
26 import java.util.Iterator;
27 import java.util.List;
28 import java.util.Map;
29 import org.apache.velocity.tools.generic.ValueParser;
30 import org.dom4j.Node;
31
32
33
34
35
36
37
38
39 public class XmlToolTests {
40
41 private static final String XML_FILE = "@test.file.dir@/file.xml";
42
43 private static final String XML_STRING =
44 "<foo>\n <bar name=\"a\"/>\n <baz>woogie</baz>\n <baz>wiggie</baz>\n</foo>";
45
46 public @Test void ctorXmlTool() throws Exception
47 {
48 try
49 {
50 new XmlTool();
51 }
52 catch (Exception e)
53 {
54 fail("Constructor 'XmlTool()' failed due to: " + e);
55 }
56 }
57
58 private XmlTool stringBased() throws Exception
59 {
60 XmlTool xml = new XmlTool();
61 xml.parse(XML_STRING);
62 return xml;
63 }
64
65 private XmlTool fileBased() throws Exception
66 {
67 XmlTool xml = new XmlTool();
68 xml.read(XML_FILE);
69 return xml;
70 }
71
72 public @Test void testStringFileEquals() throws Exception
73 {
74 String string = stringBased().toString();
75 String file = fileBased().toString();
76
77 assertEquals(string, file);
78 }
79
80 public @Test void methodAttr_Object() throws Exception
81 {
82 XmlTool xml = stringBased();
83 assertNull(xml.attr("href"));
84 xml = xml.find("bar");
85 assertNotNull(xml.attr("name"));
86 assertEquals("a", xml.attr("name"));
87 }
88
89 public @Test void methodAttributes() throws Exception
90 {
91 XmlTool xml = stringBased();
92 Map<String,String> result = xml.attributes();
93 assertTrue(result.isEmpty());
94 xml = xml.find("bar");
95 result = xml.attributes();
96 assertNotNull(result);
97 assertEquals(1, result.size());
98 assertEquals("a", result.get("name"));
99 }
100
101 public @Test void methodChildren() throws Exception
102 {
103 XmlTool xml = stringBased();
104 assertEquals(1, xml.size());
105 XmlTool result = xml.children();
106 assertEquals(3, result.size());
107 }
108
109 public @Test void methodGetParent() throws Exception
110 {
111 XmlTool xml = stringBased().find("bar");
112 assertNotNull(xml);
113 XmlTool foo = xml.getParent();
114 assertNotNull(foo);
115 assertEquals(1, foo.size());
116 assertNull(foo.getParent());
117 }
118
119 public @Test void methodParents() throws Exception
120 {
121 XmlTool foo = stringBased();
122 XmlTool xml = foo.find("bar");
123 assertEquals(foo.toString(), xml.parents().toString());
124 xml = foo.children();
125 assertEquals(3, xml.size());
126 foo = xml.parents();
127 assertEquals(1, foo.size());
128 }
129
130 public @Test void methodConfigure_ValueParser() throws Exception
131 {
132 XmlTool xml = new XmlTool();
133 Map<String,String> params = new HashMap<String,String>();
134 assertEquals("file", XmlTool.FILE_KEY);
135 params.put(XmlTool.FILE_KEY, XML_FILE);
136 xml.configure(params);
137 assertEquals(1, xml.size());
138 assertEquals("foo", xml.getName());
139 }
140
141 public @Test void methodFind_Object() throws Exception
142 {
143 XmlTool xml = stringBased();
144 XmlTool result = xml.find((Object)null);
145 assertNull(result);
146 assertEquals(xml.find("bar").toString(), xml.find("//bar").toString());
147
148
149 }
150
151 public @Test void methodGetFirst() throws Exception
152 {
153 XmlTool xml = stringBased();
154 assertSame(xml, xml.getFirst());
155 xml = xml.children();
156 assertEquals(3, xml.size());
157 xml = xml.getFirst();
158 assertEquals(1, xml.size());
159 assertEquals("a", xml.getName());
160 }
161
162 public @Test void methodGetLast() throws Exception
163 {
164 XmlTool xml = stringBased();
165 assertSame(xml, xml.getLast());
166 xml = xml.children();
167 assertEquals(3, xml.size());
168 xml = xml.getLast();
169 assertEquals(1, xml.size());
170 assertEquals("baz", xml.getName());
171 assertEquals("wiggie", xml.getText());
172 }
173
174 public @Test void methodGetName() throws Exception
175 {
176 XmlTool xml = stringBased();
177 assertEquals(1, xml.size());
178 assertEquals("foo", xml.getName());
179 xml = xml.find("bar");
180 assertEquals("a", xml.getName());
181 }
182
183 public @Test void methodGetNodeName() throws Exception
184 {
185 XmlTool xml = stringBased();
186 assertEquals("foo", xml.getNodeName());
187 xml = xml.find("baz");
188 assertEquals("baz", xml.getNodeName());
189 }
190
191 public @Test void methodGetText() throws Exception
192 {
193 XmlTool xml = stringBased();
194
195 String result = xml.getText();
196 assertEquals((String)null, result);
197 }
198
199 public @Test void methodGet_Number() throws Exception
200 {
201 XmlTool xml = stringBased();
202 assertEquals(xml.toString(), xml.get(0).toString());
203 xml = xml.children();
204 assertEquals("bar", xml.get(0).getNodeName());
205 assertEquals("baz", xml.get(1).getName());
206 assertEquals("baz", xml.get(2).getName());
207 assertNull(xml.get(3));
208 assertNull(xml.get(-1));
209 }
210
211 public @Test void methodGet_Object() throws Exception
212 {
213 XmlTool xml = stringBased();
214 assertNull(xml.get(null));
215 assertNull(xml.get(""));
216 assertNull(xml.get("null"));
217 Object result = xml.get("bar");
218 assertNotNull(result);
219 assertTrue(result instanceof XmlTool);
220 xml = (XmlTool)result;
221 result = null;
222 assertNull(result);
223 result = xml.get("0");
224 assertNotNull(result);
225 assertEquals(result.toString(), xml.toString());
226 result = null;
227 assertNull(result);
228 result = xml.get("name");
229 assertNotNull(result);
230 assertEquals("a", result);
231 }
232
233 public @Test void methodIsEmpty() throws Exception
234 {
235 XmlTool xml = new XmlTool();
236 assertTrue(xml.isEmpty());
237 xml.parse(XML_STRING);
238 assertFalse(xml.isEmpty());
239 }
240
241 public @Test void methodIterator() throws Exception
242 {
243 XmlTool xml = new XmlTool();
244 assertNull(xml.iterator());
245 xml.parse(XML_STRING);
246 Iterator<XmlTool> i = xml.iterator();
247 assertNotNull(i);
248 XmlTool foo = i.next();
249 assertNotNull(foo);
250 assertEquals(foo.toString(), xml.toString());
251 xml = xml.children();
252 i = xml.iterator();
253 assertEquals("a", i.next().attr("name"));
254 assertEquals("baz", i.next().getName());
255 assertEquals("wiggie", i.next().getText());
256 assertFalse(i.hasNext());
257 }
258
259 public @Test void methodNode() throws Exception
260 {
261 XmlTool xml = new XmlTool();
262 assertNull(xml.node());
263 xml.parse(XML_STRING);
264 Node n = xml.node();
265 assertNotNull(n);
266 }
267
268 public @Test void methodParse_Object() throws Exception
269 {
270 XmlTool xml = new XmlTool();
271 assertNull(xml.parse((Object)null));
272 assertNull(xml.parse((Object)"><S asdf8 ~$"));
273 assertNotNull(xml.parse((Object)XML_STRING));
274
275 }
276
277 public @Test void methodSize() throws Exception
278 {
279 XmlTool xml = new XmlTool();
280 assertEquals(0, xml.size());
281 xml.parse(XML_STRING);
282 assertEquals(1, xml.size());
283 xml = xml.children();
284 assertEquals(3, xml.size());
285 xml = xml.getLast();
286 assertEquals(1, xml.size());
287 }
288
289 public @Test void methodToString() throws Exception
290 {
291 XmlTool xml = new XmlTool();
292 assertTrue(xml.toString().startsWith(XmlTool.class.getName()));
293 xml.read(XML_FILE);
294 assertTrue(xml.toString().startsWith("<foo>"));
295 assertTrue(xml.toString().endsWith("</foo>"));
296 XmlTool bar = xml.find("bar");
297 assertEquals("<bar name=\"a\"/>", bar.toString());
298 XmlTool baz = (XmlTool)xml.get("baz");
299 assertEquals("<baz>woogie</baz><baz>wiggie</baz>", baz.toString());
300 }
301
302
303 }
304