mirror of
https://github.com/pocoproject/poco.git
synced 2025-10-27 02:53:10 +01:00
GH 23: JSON::Object::stringify throw BadCastException
GH issue #23 : JSON::Object::stringify throw BadCastException
This commit is contained in:
@@ -49,7 +49,17 @@ namespace JSON {
|
||||
|
||||
void Stringifier::stringify(const Var& any, std::ostream& out, unsigned int indent)
|
||||
{
|
||||
if ( any.type() == typeid(Object::Ptr) )
|
||||
if ( any.type() == typeid(Object) )
|
||||
{
|
||||
const Object& o = any.extract<Object>();
|
||||
o.stringify(out, indent == 0 ? 0 : indent + 2);
|
||||
}
|
||||
else if ( any.type() == typeid(Array) )
|
||||
{
|
||||
const Array& a = any.extract<Array>();
|
||||
a.stringify(out, indent == 0 ? 0 : indent + 2);
|
||||
}
|
||||
else if ( any.type() == typeid(Object::Ptr) )
|
||||
{
|
||||
const Object::Ptr& o = any.extract<Object::Ptr>();
|
||||
o->stringify(out, indent == 0 ? 0 : indent + 2);
|
||||
|
||||
@@ -74,6 +74,22 @@ void JSONTest::tearDown()
|
||||
}
|
||||
|
||||
|
||||
void JSONTest::testStringifier()
|
||||
{
|
||||
Object obj;
|
||||
|
||||
Array arr;
|
||||
Object obj2;
|
||||
|
||||
obj.set("array", arr);
|
||||
obj.set("obj2", obj2);
|
||||
|
||||
std::ostringstream ostr;
|
||||
obj.stringify(ostr);
|
||||
assert (ostr.str() == "{\"array\":[],\"obj2\":{}}");
|
||||
}
|
||||
|
||||
|
||||
void JSONTest::testNullProperty()
|
||||
{
|
||||
std::string json = "{ \"test\" : null }";
|
||||
@@ -806,6 +822,7 @@ CppUnit::Test* JSONTest::suite()
|
||||
{
|
||||
CppUnit::TestSuite* pSuite = new CppUnit::TestSuite("JSONTest");
|
||||
|
||||
CppUnit_addTest(pSuite, JSONTest, testStringifier);
|
||||
CppUnit_addTest(pSuite, JSONTest, testNullProperty);
|
||||
CppUnit_addTest(pSuite, JSONTest, testTrueProperty);
|
||||
CppUnit_addTest(pSuite, JSONTest, testFalseProperty);
|
||||
|
||||
@@ -46,6 +46,7 @@ public:
|
||||
JSONTest(const std::string& name);
|
||||
~JSONTest();
|
||||
|
||||
void testStringifier();
|
||||
void testNullProperty();
|
||||
void testTrueProperty();
|
||||
void testFalseProperty();
|
||||
|
||||
Reference in New Issue
Block a user