1 //
2 // NamespaceSupportTest.cpp
3 //
4 // Copyright (c) 2004-2006, Applied Informatics Software Engineering GmbH.
5 // and Contributors.
6 //
7 // SPDX-License-Identifier: BSL-1.0
8 //
9
10
11 #include "NamespaceSupportTest.h"
12 #include "CppUnit/TestCaller.h"
13 #include "CppUnit/TestSuite.h"
14 #include "Poco/SAX/NamespaceSupport.h"
15
16
17 using Poco::XML::NamespaceSupport;
18
19
NamespaceSupportTest(const std::string & name)20 NamespaceSupportTest::NamespaceSupportTest(const std::string& name): CppUnit::TestCase(name)
21 {
22 }
23
24
~NamespaceSupportTest()25 NamespaceSupportTest::~NamespaceSupportTest()
26 {
27 }
28
29
testNamespaceSupport()30 void NamespaceSupportTest::testNamespaceSupport()
31 {
32 NamespaceSupport ns;
33 NamespaceSupport::PrefixSet prefixes;
34 ns.getDeclaredPrefixes(prefixes);
35 assertTrue (prefixes.size() == 2);
36 assertTrue (prefixes.find("xml") != prefixes.end());
37 assertTrue (prefixes.find("xmlns") != prefixes.end());
38
39 ns.getPrefixes(prefixes);
40 assertTrue (prefixes.size() == 2);
41 assertTrue (prefixes.find("xml") != prefixes.end());
42 assertTrue (prefixes.find("xmlns") != prefixes.end());
43
44 ns.pushContext();
45 ns.declarePrefix("ns1", "urn:ns1");
46 ns.declarePrefix("ns2", "urn:ns2");
47
48 ns.getDeclaredPrefixes(prefixes);
49 assertTrue (prefixes.size() == 2);
50 assertTrue (prefixes.find("ns1") != prefixes.end());
51 assertTrue (prefixes.find("ns2") != prefixes.end());
52
53 ns.pushContext();
54 ns.declarePrefix("ns3", "urn:ns3");
55
56 ns.getDeclaredPrefixes(prefixes);
57 assertTrue (prefixes.size() == 1);
58 assertTrue (prefixes.find("ns3") != prefixes.end());
59
60 ns.getPrefixes(prefixes);
61 assertTrue (prefixes.size() == 5);
62 assertTrue (prefixes.find("xml") != prefixes.end());
63 assertTrue (prefixes.find("xmlns") != prefixes.end());
64 assertTrue (prefixes.find("ns1") != prefixes.end());
65 assertTrue (prefixes.find("ns2") != prefixes.end());
66 assertTrue (prefixes.find("ns3") != prefixes.end());
67
68 ns.popContext();
69 ns.getDeclaredPrefixes(prefixes);
70 assertTrue (prefixes.size() == 2);
71 assertTrue (prefixes.find("ns1") != prefixes.end());
72 assertTrue (prefixes.find("ns2") != prefixes.end());
73
74 assertTrue (ns.isMapped("urn:ns1"));
75 assertTrue (ns.isMapped("urn:ns2"));
76 assertTrue (ns.isMapped("http://www.w3.org/XML/1998/namespace"));
77 assertTrue (!ns.isMapped("urn:ns3"));
78
79 ns.getPrefixes("urn:ns2", prefixes);
80 assertTrue (prefixes.size() == 1);
81 assertTrue (prefixes.find("ns2") != prefixes.end());
82
83 ns.pushContext();
84 ns.declarePrefix("", "urn:ns3");
85 ns.declarePrefix("NS2", "urn:ns2");
86
87 ns.getPrefixes("urn:ns2", prefixes);
88 assertTrue (prefixes.size() == 2);
89 assertTrue (prefixes.find("ns2") != prefixes.end());
90 assertTrue (prefixes.find("NS2") != prefixes.end());
91
92 ns.getPrefixes(prefixes);
93 assertTrue (prefixes.size() == 5);
94 assertTrue (prefixes.find("xml") != prefixes.end());
95 assertTrue (prefixes.find("xmlns") != prefixes.end());
96 assertTrue (prefixes.find("ns1") != prefixes.end());
97 assertTrue (prefixes.find("ns2") != prefixes.end());
98 assertTrue (prefixes.find("NS2") != prefixes.end());
99
100 ns.getDeclaredPrefixes(prefixes);
101 assertTrue (prefixes.size() == 2);
102 assertTrue (prefixes.find("") != prefixes.end());
103 assertTrue (prefixes.find("NS2") != prefixes.end());
104
105 assertTrue (ns.getPrefix("urn:ns3") == "");
106 assertTrue (ns.getPrefix("urn:ns2") == "NS2");
107 assertTrue (ns.getPrefix("urn:ns4") == "");
108
109 assertTrue (ns.isMapped("urn:ns3"));
110 assertTrue (ns.isMapped("urn:ns2"));
111 assertTrue (!ns.isMapped("urn:ns4"));
112
113 assertTrue (ns.getURI("xml") == "http://www.w3.org/XML/1998/namespace");
114 assertTrue (ns.getURI("ns1") == "urn:ns1");
115 assertTrue (ns.getURI("") == "urn:ns3");
116 assertTrue (ns.getURI("NS2") == "urn:ns2");
117
118 std::string localName;
119 std::string namespaceURI;
120 bool declared = ns.processName("elem", namespaceURI, localName, false);
121 assertTrue (declared);
122 assertTrue (localName == "elem");
123 assertTrue (namespaceURI == "urn:ns3");
124
125 declared = ns.processName("NS2:elem", namespaceURI, localName, false);
126 assertTrue (declared);
127 assertTrue (localName == "elem");
128 assertTrue (namespaceURI == "urn:ns2");
129
130 declared = ns.processName("ns3:elem", namespaceURI, localName, false);
131 assertTrue (!declared);
132 assertTrue (localName == "elem");
133 assertTrue (namespaceURI == "");
134
135 declared = ns.processName("ns2:attr", namespaceURI, localName, true);
136 assertTrue (declared);
137 assertTrue (localName == "attr");
138 assertTrue (namespaceURI == "urn:ns2");
139
140 declared = ns.processName("attr", namespaceURI, localName, true);
141 assertTrue (declared);
142 assertTrue (localName == "attr");
143 assertTrue (namespaceURI == "");
144
145 declared = ns.processName("ns3:attr", namespaceURI, localName, true);
146 assertTrue (!declared);
147 assertTrue (localName == "attr");
148 assertTrue (namespaceURI == "");
149
150 ns.popContext();
151 assertTrue (ns.getURI("xml") == "http://www.w3.org/XML/1998/namespace");
152 assertTrue (ns.getURI("ns1") == "urn:ns1");
153 assertTrue (ns.getURI("") == "");
154 assertTrue (ns.getURI("NS2") == "");
155
156 declared = ns.processName("elem", namespaceURI, localName, false);
157 assertTrue (declared);
158 assertTrue (localName == "elem");
159 assertTrue (namespaceURI == "");
160
161 declared = ns.processName("ns2:elem", namespaceURI, localName, false);
162 assertTrue (declared);
163 assertTrue (localName == "elem");
164 assertTrue (namespaceURI == "urn:ns2");
165
166 declared = ns.processName("ns3:elem", namespaceURI, localName, false);
167 assertTrue (!declared);
168 assertTrue (localName == "elem");
169 assertTrue (namespaceURI == "");
170 }
171
172
setUp()173 void NamespaceSupportTest::setUp()
174 {
175 }
176
177
tearDown()178 void NamespaceSupportTest::tearDown()
179 {
180 }
181
182
suite()183 CppUnit::Test* NamespaceSupportTest::suite()
184 {
185 CppUnit::TestSuite* pSuite = new CppUnit::TestSuite("NamespaceSupportTest");
186
187 CppUnit_addTest(pSuite, NamespaceSupportTest, testNamespaceSupport);
188
189 return pSuite;
190 }
191