GH 23: JSON::Object::stringify throw BadCastException

GH issue #23 : JSON::Object::stringify throw BadCastException
This commit is contained in:
aleks-f
2012-12-02 22:12:06 -06:00
parent 0c4d2590f7
commit 42d963a7d5
3 changed files with 29 additions and 1 deletions

View File

@@ -49,7 +49,17 @@ namespace JSON {
void Stringifier::stringify(const Var& any, std::ostream& out, unsigned int indent) 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>(); const Object::Ptr& o = any.extract<Object::Ptr>();
o->stringify(out, indent == 0 ? 0 : indent + 2); o->stringify(out, indent == 0 ? 0 : indent + 2);

View File

@@ -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() void JSONTest::testNullProperty()
{ {
std::string json = "{ \"test\" : null }"; std::string json = "{ \"test\" : null }";
@@ -806,6 +822,7 @@ CppUnit::Test* JSONTest::suite()
{ {
CppUnit::TestSuite* pSuite = new CppUnit::TestSuite("JSONTest"); CppUnit::TestSuite* pSuite = new CppUnit::TestSuite("JSONTest");
CppUnit_addTest(pSuite, JSONTest, testStringifier);
CppUnit_addTest(pSuite, JSONTest, testNullProperty); CppUnit_addTest(pSuite, JSONTest, testNullProperty);
CppUnit_addTest(pSuite, JSONTest, testTrueProperty); CppUnit_addTest(pSuite, JSONTest, testTrueProperty);
CppUnit_addTest(pSuite, JSONTest, testFalseProperty); CppUnit_addTest(pSuite, JSONTest, testFalseProperty);

View File

@@ -46,6 +46,7 @@ public:
JSONTest(const std::string& name); JSONTest(const std::string& name);
~JSONTest(); ~JSONTest();
void testStringifier();
void testNullProperty(); void testNullProperty();
void testTrueProperty(); void testTrueProperty();
void testFalseProperty(); void testFalseProperty();