1 package com.thoughtworks.xstream.xml;
2
3 import junit.framework.TestCase;
4
5 public abstract class AbstractXMLReaderTest extends TestCase {
6
7 // factory method
8 protected abstract XMLReader createReader(String xml) throws Exception;
9
10 public void testStartsAtRootTag() throws Exception {
11 XMLReader xmlReader = createReader("<hello/>");
12 assertEquals("hello", xmlReader.name());
13 }
14
15 public void testCanNavigateDownChildTagsByIndex() throws Exception {
16 XMLReader xmlReader = createReader("<a><b><ooh/></b><b><aah/></b></a>");
17
18 assertEquals("a", xmlReader.name());
19 assertEquals(2, xmlReader.childCount());
20
21 xmlReader.child(0);
22 {
23 assertEquals("b", xmlReader.name());
24 assertEquals(1, xmlReader.childCount());
25
26 xmlReader.child(0);
27 {
28 assertEquals("ooh", xmlReader.name());
29 assertEquals(0, xmlReader.childCount());
30 }
31 xmlReader.pop();
32
33 }
34 xmlReader.pop();
35
36 xmlReader.child(1);
37 {
38 assertEquals("b", xmlReader.name());
39 assertEquals(1, xmlReader.childCount());
40
41 xmlReader.child(0);
42 {
43 assertEquals("aah", xmlReader.name());
44 assertEquals(0, xmlReader.childCount());
45 }
46 xmlReader.pop();
47
48 }
49 xmlReader.pop();
50 }
51
52 public void testCanNavigateDownChildTagsByName() throws Exception {
53 XMLReader xmlReader = createReader("<a><hello/><world/></a>");
54
55 assertEquals(2, xmlReader.childCount());
56
57 xmlReader.child("hello");
58 assertEquals("hello", xmlReader.name());
59 xmlReader.pop();
60
61 xmlReader.child("world");
62 assertEquals("world", xmlReader.name());
63 xmlReader.pop();
64 }
65
66 public void testChildTagsCanBeMixedWithOtherNodes() throws Exception {
67 XMLReader xmlReader = createReader("<!-- xx --><a> <hello/> <!-- x --> text <world/></a>");
68
69 assertEquals(2, xmlReader.childCount());
70
71 xmlReader.child("hello");
72 assertEquals("hello", xmlReader.name());
73 xmlReader.pop();
74
75 xmlReader.child("world");
76 assertEquals("world", xmlReader.name());
77 xmlReader.pop();
78 }
79
80 public void testFetchingChildTagByNameOnlyGetsDirectDescendant() throws Exception {
81 XMLReader xmlReader = createReader("" +
82 "<root>" +
83 " <something>" +
84 " <findme>" +
85 " <BAD/>" +
86 " </findme>" +
87 " </something>" +
88 " <findme>" +
89 " <GOOD/>" +
90 " </findme>" +
91 "</root>"
92 );
93
94 xmlReader.child("findme");
95 xmlReader.child(0);
96 assertEquals("GOOD", xmlReader.name());
97
98 }
99
100 public void testAttributesCanBeFetchedFromTags() throws Exception {
101 XMLReader xmlReader = createReader("" +
102 "<hello one=\"1\" two=\"2\">" +
103 " <child three=\"3\"/>" +
104 "</hello>");
105
106 assertEquals("1", xmlReader.attribute("one"));
107 assertEquals("2", xmlReader.attribute("two"));
108 assertNull(xmlReader.attribute("three"));
109
110 xmlReader.child(0);
111 assertNull(xmlReader.attribute("one"));
112 assertNull(xmlReader.attribute("two"));
113 assertEquals("3", xmlReader.attribute("three"));
114
115 }
116
117 public void testTextCanBeExtractedFromTag() throws Exception {
118 XMLReader xmlReader = createReader("<root><a>some<!-- ignore me --> text!</a><b>more</b></root>");
119
120 xmlReader.child(0);
121 assertEquals("some text!", xmlReader.text());
122 xmlReader.pop();
123
124 xmlReader.child(1);
125 assertEquals("more", xmlReader.text());
126 xmlReader.pop();
127 }
128
129 public void testChildElementsCanBeTestedToSeeIfTheyExist() throws Exception {
130 XMLReader xmlReader = createReader("<root><present/></root>");
131
132 assertTrue(xmlReader.childExists("present"));
133 assertTrue(!xmlReader.childExists("not-present"));
134
135 }
136 }
This page was automatically generated by Maven