1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47 package groovy.util;
48
49
50 import groovy.util.GroovyTestCase;
51 import groovy.util.Node;
52
53 import java.util.ArrayList;
54 import java.util.HashMap;
55 import java.util.List;
56 import java.util.Map;
57
58
59 /***
60 * Tests the use of the structured Attribute type
61 *
62 * @author <a href="mailto:james@coredevelopers.net">James Strachan</a>
63 * @version $Revision: 1.2 $
64 */
65 public class NodeTest extends GroovyTestCase {
66
67 public void testSimpleAttribute() {
68 Node attribute = new Node(null, "transactional");
69 assertEquals("name", "transactional", attribute.name());
70 assertEquals("attributes", 0, attribute.attributes().size());
71 assertEquals("value", 0, attribute.children().size());
72 assertEquals("text", "", attribute.text());
73
74 dump(attribute);
75 }
76
77 public void testAttributeWithAttributes() {
78 Map attributes = new HashMap();
79 attributes.put("a", "xyz");
80
81 Node attribute = new Node(null, "foo", attributes);
82 assertEquals("name", "foo", attribute.name());
83 assertEquals("attributes", 1, attribute.attributes().size());
84 assertEquals("value", 0, attribute.children().size());
85 assertEquals("text", "", attribute.text());
86
87 dump(attribute);
88 }
89
90 public void testAttributeWithText() {
91 Node attribute = new Node(null, "foo", "the text");
92 assertEquals("name", "foo", attribute.name());
93 assertEquals("attributes", 0, attribute.attributes().size());
94 assertEquals("value", 1, attribute.children().size());
95 assertEquals("text", "the text", attribute.text());
96
97 dump(attribute);
98 }
99
100 public void testAttributeWithAttributesAndChildren() {
101 Map attributes = new HashMap();
102 attributes.put("a", "xyz");
103
104 List children = new ArrayList();
105 children.add(new Node(null, "person", "James"));
106 children.add(new Node(null, "person", "Bob"));
107 children.add("someText");
108
109 Node attribute = new Node(null, "foo", attributes, children);
110 assertEquals("name", "foo", attribute.name());
111 assertEquals("attributes", 1, attribute.attributes().size());
112 assertEquals("value", 3, attribute.children().size());
113 assertEquals("text", "someText", attribute.text());
114
115 dump(attribute);
116 }
117
118 public void testAttributeWithAttributesAndChildrenWithMixedText() {
119 Map attributes = new HashMap();
120 attributes.put("a", "xyz");
121
122 List children = new ArrayList();
123 children.add("someText");
124 Node node1 = new Node(null, "person", "James");
125 children.add(node1);
126 children.add("moreText");
127 Node node2 = new Node(null, "person", "Bob");
128 children.add(node2);
129 children.add("moreText");
130
131 Node attribute = new Node(null, "foo", attributes, children);
132 assertEquals("name", "foo", attribute.name());
133 assertEquals("attributes", 1, attribute.attributes().size());
134 assertEquals("value", 5, attribute.children().size());
135 assertEquals("text", "someTextmoreTextmoreText", attribute.text());
136
137
138
139 List list = (List) attribute.get("person");
140 assertEquals("Expected list size: " + list, 2, list.size());
141
142 assertEquals("Node1", node1, list.get(0));
143 assertEquals("Node2", node2, list.get(1));
144
145 dump(attribute);
146 }
147
148 protected void dump(Node node) {
149 NodePrinter printer = new NodePrinter();
150 printer.print(node);
151 }
152
153 }