mirror of
https://github.com/VCMP-SqMod/SqMod.git
synced 2025-02-25 06:07:13 +01:00
142 lines
3.1 KiB
C++
142 lines
3.1 KiB
C++
|
//
|
||
|
// JSONConfigurationTest.cpp
|
||
|
//
|
||
|
// Copyright (c) 2004-2012, Applied Informatics Software Engineering GmbH.
|
||
|
// and Contributors.
|
||
|
//
|
||
|
// SPDX-License-Identifier: BSL-1.0
|
||
|
//
|
||
|
|
||
|
|
||
|
#include "JSONConfigurationTest.h"
|
||
|
#include "CppUnit/TestCaller.h"
|
||
|
#include "CppUnit/TestSuite.h"
|
||
|
#include "Poco/Util/JSONConfiguration.h"
|
||
|
#include "Poco/JSON/JSONException.h"
|
||
|
|
||
|
|
||
|
using Poco::Util::JSONConfiguration;
|
||
|
using Poco::Util::AbstractConfiguration;
|
||
|
using Poco::AutoPtr;
|
||
|
using Poco::NotImplementedException;
|
||
|
using Poco::NotFoundException;
|
||
|
using Poco::JSON::JSONException;
|
||
|
|
||
|
|
||
|
JSONConfigurationTest::JSONConfigurationTest(const std::string& name) : AbstractConfigurationTest(name)
|
||
|
{
|
||
|
}
|
||
|
|
||
|
|
||
|
JSONConfigurationTest::~JSONConfigurationTest()
|
||
|
{
|
||
|
}
|
||
|
|
||
|
|
||
|
void JSONConfigurationTest::testLoad()
|
||
|
{
|
||
|
JSONConfiguration config;
|
||
|
|
||
|
std::string json = "{ \"config\" : "
|
||
|
" { \"prop1\" : \"value1\", "
|
||
|
" \"prop2\" : 10, "
|
||
|
" \"prop3\" : [ \"element1\", \"element2\" ], "
|
||
|
" \"prop4\" : { \"prop5\" : false, "
|
||
|
" \"prop6\" : null } "
|
||
|
" }"
|
||
|
"}";
|
||
|
|
||
|
std::istringstream iss(json);
|
||
|
try
|
||
|
{
|
||
|
config.load(iss);
|
||
|
}
|
||
|
catch(JSONException jsone)
|
||
|
{
|
||
|
std::cout << jsone.message() << std::endl;
|
||
|
assertTrue (false);
|
||
|
}
|
||
|
|
||
|
std::string property1 = config.getString("config.prop1");
|
||
|
assertTrue (property1.compare("value1") == 0);
|
||
|
|
||
|
int property2 = config.getInt("config.prop2");
|
||
|
assertTrue (property2 == 10);
|
||
|
|
||
|
int nonExistingProperty = config.getInt("config.prop7", 5);
|
||
|
assertTrue (nonExistingProperty == 5);
|
||
|
|
||
|
std::string arrProperty = config.getString("config.prop3[1]");
|
||
|
assertTrue (arrProperty.compare("element2") == 0);
|
||
|
|
||
|
bool property35 = config.getBool("config.prop4.prop5");
|
||
|
assertTrue (! property35);
|
||
|
|
||
|
try
|
||
|
{
|
||
|
config.getString("propertyUnknown");
|
||
|
assertTrue (true);
|
||
|
}
|
||
|
catch(NotFoundException nfe)
|
||
|
{
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
void JSONConfigurationTest::testSetArrayElement()
|
||
|
{
|
||
|
JSONConfiguration config;
|
||
|
|
||
|
std::string json = "{ \"config\" : "
|
||
|
" { \"prop1\" : \"value1\", "
|
||
|
" \"prop2\" : 10, "
|
||
|
" \"prop3\" : [ \"element1\", \"element2\" ], "
|
||
|
" \"prop4\" : { \"prop5\" : false, "
|
||
|
" \"prop6\" : null } "
|
||
|
" }"
|
||
|
"}";
|
||
|
|
||
|
std::istringstream iss(json);
|
||
|
config.load(iss);
|
||
|
|
||
|
// config.prop3[0] = "foo"
|
||
|
config.setString("config.prop3[0]", "foo");
|
||
|
assertTrue (config.getString("config.prop3[0]") == "foo");
|
||
|
|
||
|
// config.prop3[1] = "bar"
|
||
|
config.setString("config.prop3[1]", "bar");
|
||
|
assertTrue (config.getString("config.prop3[1]") == "bar");
|
||
|
|
||
|
// config.prop3[3] = "baz"
|
||
|
config.setString("config.prop3[3]", "baz");
|
||
|
assertTrue (config.getString("config.prop3[3]") == "baz");
|
||
|
}
|
||
|
|
||
|
|
||
|
AbstractConfiguration::Ptr JSONConfigurationTest::allocConfiguration() const
|
||
|
{
|
||
|
return new JSONConfiguration;
|
||
|
}
|
||
|
|
||
|
|
||
|
void JSONConfigurationTest::setUp()
|
||
|
{
|
||
|
}
|
||
|
|
||
|
|
||
|
void JSONConfigurationTest::tearDown()
|
||
|
{
|
||
|
}
|
||
|
|
||
|
|
||
|
CppUnit::Test* JSONConfigurationTest::suite()
|
||
|
{
|
||
|
CppUnit::TestSuite* pSuite = new CppUnit::TestSuite("JSONConfigurationTest");
|
||
|
|
||
|
AbstractConfigurationTest_addTests(pSuite, JSONConfigurationTest);
|
||
|
CppUnit_addTest(pSuite, JSONConfigurationTest, testLoad);
|
||
|
CppUnit_addTest(pSuite, JSONConfigurationTest, testSetArrayElement);
|
||
|
|
||
|
return pSuite;
|
||
|
}
|