1 #include <cppunit/config/SourcePrefix.h>
2 #include <cppunit/tools/XmlElement.h>
3 #include "ToolsSuite.h"
4 #include "XmlElementTest.h"
5 #include "XmlUniformiser.h"
6
7
8 CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( XmlElementTest,
9 toolsSuiteName() );
10
11
XmlElementTest()12 XmlElementTest::XmlElementTest()
13 {
14 }
15
16
~XmlElementTest()17 XmlElementTest::~XmlElementTest()
18 {
19 }
20
21
22 void
setUp()23 XmlElementTest::setUp()
24 {
25 }
26
27
28 void
tearDown()29 XmlElementTest::tearDown()
30 {
31 }
32
33
34 void
testStringContentConstructor()35 XmlElementTest::testStringContentConstructor()
36 {
37 CPPUNIT_NS::XmlElement element( "aName", "someContent" );
38 CPPUNIT_ASSERT_EQUAL( std::string("aName"), element.name() );
39 CPPUNIT_ASSERT_EQUAL( std::string("someContent"), element.content() );
40 }
41
42
43 void
testNumericContentConstructor()44 XmlElementTest::testNumericContentConstructor()
45 {
46 CPPUNIT_NS::XmlElement element( "numericName", 123456789 );
47 CPPUNIT_ASSERT_EQUAL( std::string("numericName"), element.name() );
48 CPPUNIT_ASSERT_EQUAL( std::string("123456789"), element.content() );
49 }
50
51
52 void
testSetName()53 XmlElementTest::testSetName()
54 {
55 CPPUNIT_NS::XmlElement element( "aName" );
56 element.setName( "anotherName" );
57 CPPUNIT_ASSERT_EQUAL( std::string("anotherName"), element.name() );
58 }
59
60
61 void
testSetStringContent()62 XmlElementTest::testSetStringContent()
63 {
64 CPPUNIT_NS::XmlElement element( "aName", "someContent" );
65 element.setContent( "other" );
66 CPPUNIT_ASSERT_EQUAL( std::string("other"), element.content() );
67 }
68
69
70 void
testSetNumericContent()71 XmlElementTest::testSetNumericContent()
72 {
73 CPPUNIT_NS::XmlElement element( "aName", "someContent" );
74 element.setContent( 87654321 );
75 CPPUNIT_ASSERT_EQUAL( std::string("87654321"), element.content() );
76 }
77
78
79 void
testElementCount()80 XmlElementTest::testElementCount()
81 {
82 CPPUNIT_NS::XmlElement node( "element", "content" );
83 CPPUNIT_ASSERT_EQUAL( 0, node.elementCount() );
84
85 node.addElement( new CPPUNIT_NS::XmlElement( "child1" ) );
86 node.addElement( new CPPUNIT_NS::XmlElement( "child2" ) );
87 CPPUNIT_ASSERT_EQUAL( 2, node.elementCount() );
88 }
89
90
91 void
testElementAtNegativeIndexThrow()92 XmlElementTest::testElementAtNegativeIndexThrow()
93 {
94 CPPUNIT_NS::XmlElement node( "element" );
95 node.elementAt( -1 );
96 }
97
98
99 void
testElementAtTooLargeIndexThrow()100 XmlElementTest::testElementAtTooLargeIndexThrow()
101 {
102 CPPUNIT_NS::XmlElement node( "element" );
103 node.elementAt( 0 );
104 }
105
106
107 void
testElementAt()108 XmlElementTest::testElementAt()
109 {
110 CPPUNIT_NS::XmlElement node( "element" );
111 CPPUNIT_NS::XmlElement *element1 = new CPPUNIT_NS::XmlElement( "element1" );
112 CPPUNIT_NS::XmlElement *element2 = new CPPUNIT_NS::XmlElement( "element2" );
113 node.addElement( element1 );
114 node.addElement( element2 );
115
116 CPPUNIT_ASSERT( element1 == node.elementAt(0) );
117 CPPUNIT_ASSERT( element2 == node.elementAt(1) );
118 }
119
120
121 void
testElementForThrow()122 XmlElementTest::testElementForThrow()
123 {
124 CPPUNIT_NS::XmlElement node( "element" );
125 node.addElement( new CPPUNIT_NS::XmlElement( "element1" ) );
126 node.elementFor( "name2" );
127 }
128
129
130 void
testElementFor()131 XmlElementTest::testElementFor()
132 {
133 CPPUNIT_NS::XmlElement node( "element" );
134 CPPUNIT_NS::XmlElement *element1 = new CPPUNIT_NS::XmlElement( "element1" );
135 CPPUNIT_NS::XmlElement *element2 = new CPPUNIT_NS::XmlElement( "element2" );
136 node.addElement( element1 );
137 node.addElement( element2 );
138
139 CPPUNIT_ASSERT( element2 == node.elementFor( "element2" ) );
140 CPPUNIT_ASSERT( element1 == node.elementFor( "element1" ) );
141 }
142
143
144 void
testEmptyNodeToString()145 XmlElementTest::testEmptyNodeToString()
146 {
147 CPPUNIT_NS::XmlElement node( "element" );
148 std::string expectedXml = "<element></element>";
149 CPPUNITTEST_ASSERT_XML_EQUAL( expectedXml, node.toString() );
150 }
151
152
153 void
testElementWithAttributesToString()154 XmlElementTest::testElementWithAttributesToString()
155 {
156 CPPUNIT_NS::XmlElement node( "element" );
157 node.addAttribute( "id", 17 );
158 node.addAttribute( "date-format", "iso-8901" );
159 std::string expectedXml = "<element id=\"17\" "
160 "date-format=\"iso-8901\">"
161 "</element>";
162 CPPUNITTEST_ASSERT_XML_EQUAL( expectedXml, node.toString() );
163 }
164
165
166 void
testEscapedAttributeValueToString()167 XmlElementTest::testEscapedAttributeValueToString()
168 {
169 CPPUNIT_NS::XmlElement node( "element" );
170 node.addAttribute( "escaped", "&<>\"'" );
171 std::string expectedXml = "<element escaped=\""
172 "&<>"'"
173 "\"></element>";
174 CPPUNITTEST_ASSERT_XML_EQUAL( expectedXml, node.toString() );
175 }
176
177
178 void
testElementToStringEscapeContent()179 XmlElementTest::testElementToStringEscapeContent()
180 {
181 CPPUNIT_NS::XmlElement node( "element", "ChessTest<class Chess>" );
182 std::string expectedXml = "<element>"
183 "ChessTest<class Chess>"
184 "</element>";
185 CPPUNITTEST_ASSERT_XML_EQUAL( expectedXml, node.toString() );
186 }
187
188
189 void
testElementWithChildrenToString()190 XmlElementTest::testElementWithChildrenToString()
191 {
192 CPPUNIT_NS::XmlElement node( "element" );
193 node.addElement( new CPPUNIT_NS::XmlElement( "child1" ) );
194 node.addElement( new CPPUNIT_NS::XmlElement( "child2" ) );
195 std::string expectedXml = "<element><child1></child1>"
196 "<child2></child2></element>";
197 CPPUNITTEST_ASSERT_XML_EQUAL( expectedXml, node.toString() );
198 }
199
200
201 void
testElementWithContentToString()202 XmlElementTest::testElementWithContentToString()
203 {
204 CPPUNIT_NS::XmlElement node( "element", "content\nline2" );
205 std::string expectedXml = "<element>content\nline2</element>";
206 CPPUNITTEST_ASSERT_XML_EQUAL( expectedXml, node.toString() );
207 }
208
209
210 void
testElementWithNumericContentToString()211 XmlElementTest::testElementWithNumericContentToString()
212 {
213 CPPUNIT_NS::XmlElement node( "element", 123456789 );
214 std::string expectedXml = "<element>123456789</element>";
215 CPPUNITTEST_ASSERT_XML_EQUAL( expectedXml, node.toString() );
216 }
217
218
219 void
testElementWithContentAndChildToString()220 XmlElementTest::testElementWithContentAndChildToString()
221 {
222 CPPUNIT_NS::XmlElement node( "element", "content" );
223 node.addElement( new CPPUNIT_NS::XmlElement( "child1" ) );
224 std::string expectedXml = "<element><child1></child1>content</element>";
225 CPPUNITTEST_ASSERT_XML_EQUAL( expectedXml, node.toString() );
226 }
227