1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.commons.jxpath;
18
19 import java.util.Iterator;
20 import java.util.List;
21
22 import org.w3c.dom.Element;
23
24
25
26
27
28
29
30
31 public class BasicNodeSetTest extends JXPathTestCase {
32
33
34 protected JXPathContext context;
35
36
37 protected BasicNodeSet nodeSet;
38
39 protected void setUp() throws Exception {
40 super.setUp();
41 context = JXPathContext.newContext(new TestMixedModelBean());
42 nodeSet = new BasicNodeSet();
43 }
44
45
46
47
48
49
50 protected void addPointers(String xpath) {
51 for (Iterator iter = context.iteratePointers(xpath); iter.hasNext();) {
52 nodeSet.add((Pointer) iter.next());
53 }
54 nudge();
55 }
56
57
58
59
60
61
62 protected void removePointers(String xpath) {
63 for (Iterator iter = context.iteratePointers(xpath); iter.hasNext();) {
64 nodeSet.remove((Pointer) iter.next());
65 }
66 nudge();
67 }
68
69
70
71
72 protected void nudge() {
73 nodeSet.getPointers();
74 nodeSet.getValues();
75 nodeSet.getNodes();
76 }
77
78
79
80
81 public void testAdd() {
82 addPointers("/bean/integers");
83 assertEquals(nodeSet.getPointers().toString(), list("/bean/integers[1]",
84 "/bean/integers[2]", "/bean/integers[3]", "/bean/integers[4]").toString());
85 assertEquals(list(new Integer(1), new Integer(2), new Integer(3),
86 new Integer(4)), nodeSet.getValues());
87 assertEquals(list(new Integer(1), new Integer(2), new Integer(3),
88 new Integer(4)), nodeSet.getNodes());
89 }
90
91
92
93
94 public void testRemove() {
95 addPointers("/bean/integers");
96 removePointers("/bean/integers[4]");
97 assertEquals(list("/bean/integers[1]", "/bean/integers[2]", "/bean/integers[3]")
98 .toString(), nodeSet.getPointers().toString());
99 assertEquals(list(new Integer(1), new Integer(2), new Integer(3)),
100 nodeSet.getValues());
101 assertEquals(list(new Integer(1), new Integer(2), new Integer(3)),
102 nodeSet.getNodes());
103 }
104
105
106
107
108 public void testNodes() {
109 addPointers("/document/vendor/contact");
110 assertEquals(list("/document/vendor[1]/contact[1]",
111 "/document/vendor[1]/contact[2]",
112 "/document/vendor[1]/contact[3]",
113 "/document/vendor[1]/contact[4]").toString(),
114 nodeSet.getPointers().toString());
115 assertEquals(list("John", "Jack", "Jim", "Jack Black"),
116 nodeSet.getValues());
117 assertElementNames(list("contact", "contact", "contact", "contact"), nodeSet.getNodes());
118 assertElementValues(list("John", "Jack", "Jim", "Jack Black"), nodeSet.getNodes());
119 }
120
121
122
123
124
125
126 protected void assertElementNames(List names, List elements) {
127 assertEquals(names.size(), elements.size());
128 Iterator nameIter = names.iterator();
129 Iterator elementIter = elements.iterator();
130 while (elementIter.hasNext()) {
131 assertEquals(nameIter.next(), ((Element) elementIter.next()).getTagName());
132 }
133 }
134
135
136
137
138
139
140 protected void assertElementValues(List values, List elements) {
141 assertEquals(values.size(), elements.size());
142 Iterator valueIter = values.iterator();
143 Iterator elementIter = elements.iterator();
144 while (elementIter.hasNext()) {
145 assertEquals(valueIter.next(), ((Element) elementIter.next()).getFirstChild().getNodeValue());
146 }
147
148 }
149 }