1 //
2 // ConfigurationMapperTest.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 "ConfigurationMapperTest.h"
12 #include "CppUnit/TestCaller.h"
13 #include "CppUnit/TestSuite.h"
14 #include "Poco/Util/ConfigurationMapper.h"
15 #include "Poco/Util/MapConfiguration.h"
16 #include "Poco/AutoPtr.h"
17 #include "Poco/Exception.h"
18 #include <algorithm>
19
20
21 using Poco::Util::AbstractConfiguration;
22 using Poco::Util::ConfigurationMapper;
23 using Poco::Util::MapConfiguration;
24 using Poco::AutoPtr;
25
26
ConfigurationMapperTest(const std::string & name)27 ConfigurationMapperTest::ConfigurationMapperTest(const std::string& name): AbstractConfigurationTest(name)
28 {
29 }
30
31
~ConfigurationMapperTest()32 ConfigurationMapperTest::~ConfigurationMapperTest()
33 {
34 }
35
36
testMapper1()37 void ConfigurationMapperTest::testMapper1()
38 {
39 AutoPtr<AbstractConfiguration> pConf = createConfiguration();
40 AutoPtr<AbstractConfiguration> pMapper = new ConfigurationMapper("", "", pConf);
41 assertTrue (pMapper->hasProperty("prop5.string1"));
42 assertTrue (pMapper->hasProperty("prop5.string1"));
43
44 AbstractConfiguration::Keys keys;
45 pMapper->keys(keys);
46 assertTrue (keys.size() == 13);
47 assertTrue (std::find(keys.begin(), keys.end(), "prop5") != keys.end());
48
49 pMapper->keys("prop5", keys);
50 assertTrue (keys.size() == 4);
51 assertTrue (std::find(keys.begin(), keys.end(), "string1") != keys.end());
52 assertTrue (std::find(keys.begin(), keys.end(), "string2") != keys.end());
53 assertTrue (std::find(keys.begin(), keys.end(), "sub1") != keys.end());
54 assertTrue (std::find(keys.begin(), keys.end(), "sub2") != keys.end());
55
56 assertTrue (pMapper->getString("prop5.string1") == "foo");
57 assertTrue (pMapper->getString("prop5.sub1.string1") == "FOO");
58
59 pMapper->setString("prop5.string3", "baz");
60 assertTrue (pMapper->getString("prop5.string3") == "baz");
61 assertTrue (pConf->getString("prop5.string3") == "baz");
62
63 pMapper->remove("prop5.string3");
64 assertTrue (!pMapper->hasProperty("prop5.string3"));
65 assertTrue (!pConf->hasProperty("prop5.string3"));
66 }
67
68
testMapper2()69 void ConfigurationMapperTest::testMapper2()
70 {
71 AutoPtr<AbstractConfiguration> pConf = createConfiguration();
72 AutoPtr<AbstractConfiguration> pMapper = new ConfigurationMapper("prop5", "root.conf", pConf);
73
74 assertTrue (pMapper->hasProperty("root.conf.string1"));
75 assertTrue (pMapper->hasProperty("root.conf.string2"));
76
77 AbstractConfiguration::Keys keys;
78 pMapper->keys(keys);
79 assertTrue (keys.size() == 1);
80 assertTrue (std::find(keys.begin(), keys.end(), "root") != keys.end());
81
82 pMapper->keys("root", keys);
83 assertTrue (keys.size() == 1);
84 assertTrue (std::find(keys.begin(), keys.end(), "conf") != keys.end());
85
86 pMapper->keys("root.conf", keys);
87 assertTrue (keys.size() == 4);
88 assertTrue (std::find(keys.begin(), keys.end(), "string1") != keys.end());
89 assertTrue (std::find(keys.begin(), keys.end(), "string2") != keys.end());
90 assertTrue (std::find(keys.begin(), keys.end(), "sub1") != keys.end());
91 assertTrue (std::find(keys.begin(), keys.end(), "sub2") != keys.end());
92
93 assertTrue (pMapper->getString("root.conf.string1") == "foo");
94 assertTrue (pMapper->getString("root.conf.sub1.string1") == "FOO");
95
96 pMapper->setString("root.conf.string3", "baz");
97 assertTrue (pMapper->getString("root.conf.string3") == "baz");
98 assertTrue (pConf->getString("prop5.string3") == "baz");
99
100 pMapper->remove("root.conf.string3");
101 assertTrue (!pMapper->hasProperty("root.conf.string3"));
102 assertTrue (!pConf->hasProperty("prop5.string3"));
103 }
104
105
testMapper3()106 void ConfigurationMapperTest::testMapper3()
107 {
108 AutoPtr<AbstractConfiguration> pConf = createConfiguration();
109 AutoPtr<AbstractConfiguration> pMapper = new ConfigurationMapper("", "root", pConf);
110
111 assertTrue (pMapper->hasProperty("root.prop5.string1"));
112 assertTrue (pMapper->hasProperty("root.prop5.string2"));
113
114 AbstractConfiguration::Keys keys;
115 pMapper->keys(keys);
116 assertTrue (keys.size() == 1);
117 assertTrue (std::find(keys.begin(), keys.end(), "root") != keys.end());
118
119 pMapper->keys("root", keys);
120 assertTrue (keys.size() == 13);
121 assertTrue (std::find(keys.begin(), keys.end(), "prop5") != keys.end());
122
123 pMapper->keys("root.prop5", keys);
124 assertTrue (keys.size() == 4);
125 assertTrue (std::find(keys.begin(), keys.end(), "string1") != keys.end());
126 assertTrue (std::find(keys.begin(), keys.end(), "string2") != keys.end());
127 assertTrue (std::find(keys.begin(), keys.end(), "sub1") != keys.end());
128 assertTrue (std::find(keys.begin(), keys.end(), "sub2") != keys.end());
129
130 assertTrue (pMapper->getString("root.prop5.string1") == "foo");
131 assertTrue (pMapper->getString("root.prop5.sub1.string1") == "FOO");
132
133 pMapper->setString("root.prop5.string3", "baz");
134 assertTrue (pMapper->getString("root.prop5.string3") == "baz");
135 assertTrue (pConf->getString("prop5.string3") == "baz");
136
137 pMapper->remove("root.prop5.string3");
138 assertTrue (!pMapper->hasProperty("root.prop5.string3"));
139 assertTrue (!pConf->hasProperty("prop5.string3"));
140 }
141
142
testMapper4()143 void ConfigurationMapperTest::testMapper4()
144 {
145 AutoPtr<AbstractConfiguration> pConf = createConfiguration();
146 AutoPtr<AbstractConfiguration> pMapper = new ConfigurationMapper("prop5", "", pConf);
147
148 assertTrue (pMapper->hasProperty("string1"));
149 assertTrue (pMapper->hasProperty("string2"));
150
151 AbstractConfiguration::Keys keys;
152 pMapper->keys(keys);
153 assertTrue (keys.size() == 4);
154 assertTrue (std::find(keys.begin(), keys.end(), "string1") != keys.end());
155 assertTrue (std::find(keys.begin(), keys.end(), "string2") != keys.end());
156 assertTrue (std::find(keys.begin(), keys.end(), "sub1") != keys.end());
157 assertTrue (std::find(keys.begin(), keys.end(), "sub2") != keys.end());
158
159 assertTrue (pMapper->getString("string1") == "foo");
160 assertTrue (pMapper->getString("sub1.string1") == "FOO");
161
162 pMapper->setString("string3", "baz");
163 assertTrue (pMapper->getString("string3") == "baz");
164 assertTrue (pConf->getString("prop5.string3") == "baz");
165
166 pMapper->remove("string3");
167 assertTrue (!pMapper->hasProperty("string3"));
168 assertTrue (!pConf->hasProperty("prop5.string3"));
169 }
170
171
allocConfiguration() const172 AbstractConfiguration::Ptr ConfigurationMapperTest::allocConfiguration() const
173 {
174 return new MapConfiguration;
175 }
176
177
setUp()178 void ConfigurationMapperTest::setUp()
179 {
180 }
181
182
tearDown()183 void ConfigurationMapperTest::tearDown()
184 {
185 }
186
187
suite()188 CppUnit::Test* ConfigurationMapperTest::suite()
189 {
190 CppUnit::TestSuite* pSuite = new CppUnit::TestSuite("ConfigurationMapperTest");
191
192 AbstractConfigurationTest_addTests(pSuite, ConfigurationMapperTest);
193 CppUnit_addTest(pSuite, ConfigurationMapperTest, testMapper1);
194 CppUnit_addTest(pSuite, ConfigurationMapperTest, testMapper2);
195 CppUnit_addTest(pSuite, ConfigurationMapperTest, testMapper3);
196 CppUnit_addTest(pSuite, ConfigurationMapperTest, testMapper4);
197
198 return pSuite;
199 }
200