diff options
author | Kevin Smith <git@kismith.co.uk> | 2012-03-01 08:03:50 (GMT) |
---|---|---|
committer | Kevin Smith <git@kismith.co.uk> | 2012-03-03 09:00:30 (GMT) |
commit | fde71bd59b1412ae475c06f2d4100ce088e86af6 (patch) | |
tree | 4f3d85c700942d666c5ac5d032c757bc45bb1593 /Swift/Controllers/Settings/XMLSettingsProvider.cpp | |
parent | 5271144cb6c0ecf3dc237af25197fa72a8737c09 (diff) | |
download | swift-contrib-fde71bd59b1412ae475c06f2d4100ce088e86af6.zip swift-contrib-fde71bd59b1412ae475c06f2d4100ce088e86af6.tar.bz2 |
Unit tests for SettingsProviderHierachy
Also fixing up errors they found and an uninitialised read left-over from the original patch.
Diffstat (limited to 'Swift/Controllers/Settings/XMLSettingsProvider.cpp')
-rw-r--r-- | Swift/Controllers/Settings/XMLSettingsProvider.cpp | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/Swift/Controllers/Settings/XMLSettingsProvider.cpp b/Swift/Controllers/Settings/XMLSettingsProvider.cpp index 3710072..e83ed24 100644 --- a/Swift/Controllers/Settings/XMLSettingsProvider.cpp +++ b/Swift/Controllers/Settings/XMLSettingsProvider.cpp @@ -4,70 +4,75 @@ * See Documentation/Licenses/GPLv3.txt for more information. */ #include <Swift/Controllers/Settings/XMLSettingsProvider.h> #include <boost/lexical_cast.hpp> #include <boost/algorithm/string.hpp> #include <Swiften/Parser/PlatformXMLParserFactory.h> #include <Swiften/Parser/XMLParser.h> #include <Swiften/Base/Log.h> namespace Swift { XMLSettingsProvider::XMLSettingsProvider(const std::string& xmlConfig) : level_(0) { if (!xmlConfig.empty()) { PlatformXMLParserFactory factory; XMLParser* parser = factory.createXMLParser(this); if (parser->parse(xmlConfig)) { SWIFT_LOG(debug) << "Found and parsed system config" << std::endl; } else { SWIFT_LOG(debug) << "Found invalid system config" << std::endl; } delete parser; } else { SWIFT_LOG(debug) << "No system config found" << std::endl; } } XMLSettingsProvider::~XMLSettingsProvider() { } +bool XMLSettingsProvider::hasSetting(const std::string& key) { + return (values_.find(key) != values_.end()); +} + + std::string XMLSettingsProvider::getSetting(const Setting<std::string>& setting) { if (values_.find(setting.getKey()) != values_.end()) { std::string value = values_[setting.getKey()]; return value; } return setting.getDefaultValue(); } void XMLSettingsProvider::storeSetting(const Setting<std::string>& /*settingPath*/, const std::string& /*settingValue*/) { assert(false); } bool XMLSettingsProvider::getSetting(const Setting<bool>& setting) { if (values_.find(setting.getKey()) != values_.end()) { std::string value = values_[setting.getKey()]; return boost::iequals(value, "true") || value == "1"; } return setting.getDefaultValue(); } void XMLSettingsProvider::storeSetting(const Setting<bool>& /*settingPath*/, const bool& /*settingValue*/) { assert(false); } int XMLSettingsProvider::getSetting(const Setting<int>& setting) { if (values_.find(setting.getKey()) != values_.end()) { std::string value = values_[setting.getKey()]; try { return value.empty() ? setting.getDefaultValue() : boost::lexical_cast<int>(value);; } catch(boost::bad_lexical_cast &) {} } return setting.getDefaultValue(); } |