Skip to content

Commit

Permalink
GH 23: JSON::Object::stringify throw BadCastException
Browse files Browse the repository at this point in the history
GH issue #23 : JSON::Object::stringify throw BadCastException
  • Loading branch information
aleks-f committed Dec 3, 2012
1 parent 0c4d259 commit 42d963a
Show file tree
Hide file tree
Showing 3 changed files with 29 additions and 1 deletion.
12 changes: 11 additions & 1 deletion JSON/src/Stringifier.cpp
Expand Up @@ -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);
Expand Down
17 changes: 17 additions & 0 deletions JSON/testsuite/src/JSONTest.cpp
Expand Up @@ -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 }";
Expand Down Expand Up @@ -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);
Expand Down
1 change: 1 addition & 0 deletions JSON/testsuite/src/JSONTest.h
Expand Up @@ -46,6 +46,7 @@ class JSONTest: public CppUnit::TestCase
JSONTest(const std::string& name);
~JSONTest();

void testStringifier();
void testNullProperty();
void testTrueProperty();
void testFalseProperty();
Expand Down

0 comments on commit 42d963a

Please sign in to comment.