|
|
@@ -39,7 +39,8 @@
|
|
|
#include "Poco/JSON/Query.h"
|
|
|
#include "Poco/JSON/JSONException.h"
|
|
|
#include "Poco/JSON/Stringifier.h"
|
|
|
-#include "Poco/JSON/DefaultHandler.h"
|
|
|
+#include "Poco/JSON/ParseHandler.h"
|
|
|
+#include "Poco/JSON/PrintHandler.h"
|
|
|
#include "Poco/JSON/Template.h"
|
|
|
|
|
|
#include "Poco/Path.h"
|
|
|
@@ -87,7 +88,7 @@ void JSONTest::testNullProperty()
|
|
|
Var result;
|
|
|
try
|
|
|
{
|
|
|
- DefaultHandler handler;
|
|
|
+ ParseHandler handler;
|
|
|
parser.setHandler(&handler);
|
|
|
parser.parse(json);
|
|
|
result = handler.result();
|
|
|
@@ -114,7 +115,7 @@ void JSONTest::testTrueProperty()
|
|
|
|
|
|
try
|
|
|
{
|
|
|
- DefaultHandler handler;
|
|
|
+ ParseHandler handler;
|
|
|
parser.setHandler(&handler);
|
|
|
parser.parse(json);
|
|
|
result = handler.result();
|
|
|
@@ -143,7 +144,7 @@ void JSONTest::testFalseProperty()
|
|
|
|
|
|
try
|
|
|
{
|
|
|
- DefaultHandler handler;
|
|
|
+ ParseHandler handler;
|
|
|
parser.setHandler(&handler);
|
|
|
parser.parse(json);
|
|
|
result = handler.result();
|
|
|
@@ -172,7 +173,7 @@ void JSONTest::testNumberProperty()
|
|
|
|
|
|
try
|
|
|
{
|
|
|
- DefaultHandler handler;
|
|
|
+ ParseHandler handler;
|
|
|
parser.setHandler(&handler);
|
|
|
parser.parse(json);
|
|
|
result = handler.result();
|
|
|
@@ -202,7 +203,7 @@ void JSONTest::testUnsignedNumberProperty()
|
|
|
|
|
|
try
|
|
|
{
|
|
|
- DefaultHandler handler;
|
|
|
+ ParseHandler handler;
|
|
|
parser.setHandler(&handler);
|
|
|
parser.parse(json);
|
|
|
result = handler.result();
|
|
|
@@ -233,7 +234,7 @@ void JSONTest::testNumber64Property()
|
|
|
|
|
|
try
|
|
|
{
|
|
|
- DefaultHandler handler;
|
|
|
+ ParseHandler handler;
|
|
|
parser.setHandler(&handler);
|
|
|
parser.parse(json);
|
|
|
result = handler.result();
|
|
|
@@ -263,7 +264,7 @@ void JSONTest::testUnsignedNumber64Property()
|
|
|
|
|
|
try
|
|
|
{
|
|
|
- DefaultHandler handler;
|
|
|
+ ParseHandler handler;
|
|
|
parser.setHandler(&handler);
|
|
|
parser.parse(json);
|
|
|
result = handler.result();
|
|
|
@@ -294,7 +295,7 @@ void JSONTest::testStringProperty()
|
|
|
|
|
|
try
|
|
|
{
|
|
|
- DefaultHandler handler;
|
|
|
+ ParseHandler handler;
|
|
|
parser.setHandler(&handler);
|
|
|
parser.parse(json);
|
|
|
result = handler.result();
|
|
|
@@ -323,7 +324,7 @@ void JSONTest::testEmptyObject()
|
|
|
|
|
|
try
|
|
|
{
|
|
|
- DefaultHandler handler;
|
|
|
+ ParseHandler handler;
|
|
|
parser.setHandler(&handler);
|
|
|
parser.parse(json);
|
|
|
result = handler.result();
|
|
|
@@ -349,7 +350,7 @@ void JSONTest::testDoubleProperty()
|
|
|
|
|
|
try
|
|
|
{
|
|
|
- DefaultHandler handler;
|
|
|
+ ParseHandler handler;
|
|
|
parser.setHandler(&handler);
|
|
|
parser.parse(json);
|
|
|
result = handler.result();
|
|
|
@@ -378,7 +379,7 @@ void JSONTest::testDouble2Property()
|
|
|
|
|
|
try
|
|
|
{
|
|
|
- DefaultHandler handler;
|
|
|
+ ParseHandler handler;
|
|
|
parser.setHandler(&handler);
|
|
|
parser.parse(json);
|
|
|
result = handler.result();
|
|
|
@@ -407,7 +408,7 @@ void JSONTest::testDouble3Property()
|
|
|
|
|
|
try
|
|
|
{
|
|
|
- DefaultHandler handler;
|
|
|
+ ParseHandler handler;
|
|
|
parser.setHandler(&handler);
|
|
|
parser.parse(json);
|
|
|
result = handler.result();
|
|
|
@@ -436,7 +437,7 @@ void JSONTest::testObjectProperty()
|
|
|
|
|
|
try
|
|
|
{
|
|
|
- DefaultHandler handler;
|
|
|
+ ParseHandler handler;
|
|
|
parser.setHandler(&handler);
|
|
|
parser.parse(json);
|
|
|
result = handler.result();
|
|
|
@@ -472,7 +473,7 @@ void JSONTest::testObjectArray()
|
|
|
|
|
|
try
|
|
|
{
|
|
|
- DefaultHandler handler;
|
|
|
+ ParseHandler handler;
|
|
|
parser.setHandler(&handler);
|
|
|
parser.parse(json);
|
|
|
result = handler.result();
|
|
|
@@ -494,6 +495,37 @@ void JSONTest::testObjectArray()
|
|
|
}
|
|
|
|
|
|
|
|
|
+void JSONTest::testArrayOfObjects()
|
|
|
+{
|
|
|
+ std::string json = "[ {\"test\" : 0}, { \"test1\" : [1, 2, 3], \"test2\" : 4 } ]";
|
|
|
+ Parser parser;
|
|
|
+ Var result;
|
|
|
+
|
|
|
+ try
|
|
|
+ {
|
|
|
+ ParseHandler handler;
|
|
|
+ parser.setHandler(&handler);
|
|
|
+ parser.parse(json);
|
|
|
+ result = handler.result();
|
|
|
+ }
|
|
|
+ catch(JSONException& jsone)
|
|
|
+ {
|
|
|
+ std::cout << jsone.message() << std::endl;
|
|
|
+ assert(false);
|
|
|
+ }
|
|
|
+
|
|
|
+ assert(result.type() == typeid(Array::Ptr));
|
|
|
+ Array::Ptr arr = result.extract<Array::Ptr>();
|
|
|
+ Object::Ptr object = arr->getObject(0);
|
|
|
+ assert (object->getValue<int>("test") == 0);
|
|
|
+ object = arr->getObject(1);
|
|
|
+ arr = object->getArray("test1");
|
|
|
+ result = arr->get(0);
|
|
|
+ assert (result == 1);
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
void JSONTest::testEmptyArray()
|
|
|
{
|
|
|
std::string json = "[]";
|
|
|
@@ -502,7 +534,7 @@ void JSONTest::testEmptyArray()
|
|
|
|
|
|
try
|
|
|
{
|
|
|
- DefaultHandler handler;
|
|
|
+ ParseHandler handler;
|
|
|
parser.setHandler(&handler);
|
|
|
parser.parse(json);
|
|
|
result = handler.result();
|
|
|
@@ -528,7 +560,7 @@ void JSONTest::testNestedArray()
|
|
|
|
|
|
try
|
|
|
{
|
|
|
- DefaultHandler handler;
|
|
|
+ ParseHandler handler;
|
|
|
parser.setHandler(&handler);
|
|
|
parser.parse(json);
|
|
|
result = handler.result();
|
|
|
@@ -554,7 +586,7 @@ void JSONTest::testNullElement()
|
|
|
|
|
|
try
|
|
|
{
|
|
|
- DefaultHandler handler;
|
|
|
+ ParseHandler handler;
|
|
|
parser.setHandler(&handler);
|
|
|
parser.parse(json);
|
|
|
result = handler.result();
|
|
|
@@ -582,7 +614,7 @@ void JSONTest::testTrueElement()
|
|
|
|
|
|
try
|
|
|
{
|
|
|
- DefaultHandler handler;
|
|
|
+ ParseHandler handler;
|
|
|
parser.setHandler(&handler);
|
|
|
parser.parse(json);
|
|
|
result = handler.result();
|
|
|
@@ -611,7 +643,7 @@ void JSONTest::testFalseElement()
|
|
|
|
|
|
try
|
|
|
{
|
|
|
- DefaultHandler handler;
|
|
|
+ ParseHandler handler;
|
|
|
parser.setHandler(&handler);
|
|
|
parser.parse(json);
|
|
|
result = handler.result();
|
|
|
@@ -640,7 +672,7 @@ void JSONTest::testNumberElement()
|
|
|
|
|
|
try
|
|
|
{
|
|
|
- DefaultHandler handler;
|
|
|
+ ParseHandler handler;
|
|
|
parser.setHandler(&handler);
|
|
|
parser.parse(json);
|
|
|
result = handler.result();
|
|
|
@@ -669,7 +701,7 @@ void JSONTest::testStringElement()
|
|
|
|
|
|
try
|
|
|
{
|
|
|
- DefaultHandler handler;
|
|
|
+ ParseHandler handler;
|
|
|
parser.setHandler(&handler);
|
|
|
parser.parse(json);
|
|
|
result = handler.result();
|
|
|
@@ -698,7 +730,7 @@ void JSONTest::testEmptyObjectElement()
|
|
|
|
|
|
try
|
|
|
{
|
|
|
- DefaultHandler handler;
|
|
|
+ ParseHandler handler;
|
|
|
parser.setHandler(&handler);
|
|
|
parser.parse(json);
|
|
|
result = handler.result();
|
|
|
@@ -725,7 +757,7 @@ void JSONTest::testDoubleElement()
|
|
|
|
|
|
try
|
|
|
{
|
|
|
- DefaultHandler handler;
|
|
|
+ ParseHandler handler;
|
|
|
parser.setHandler(&handler);
|
|
|
parser.parse(json);
|
|
|
result = handler.result();
|
|
|
@@ -754,7 +786,7 @@ void JSONTest::testOptValue()
|
|
|
|
|
|
try
|
|
|
{
|
|
|
- DefaultHandler handler;
|
|
|
+ ParseHandler handler;
|
|
|
parser.setHandler(&handler);
|
|
|
parser.parse(json);
|
|
|
result = handler.result();
|
|
|
@@ -781,7 +813,7 @@ void JSONTest::testQuery()
|
|
|
|
|
|
try
|
|
|
{
|
|
|
- DefaultHandler handler;
|
|
|
+ ParseHandler handler;
|
|
|
parser.setHandler(&handler);
|
|
|
parser.parse(json);
|
|
|
result = handler.result();
|
|
|
@@ -801,15 +833,206 @@ void JSONTest::testQuery()
|
|
|
}
|
|
|
|
|
|
|
|
|
+void JSONTest::testPrintHandler()
|
|
|
+{
|
|
|
+ std::string json = "{ \"name\" : \"Homer\", \"age\" : 38, \"wife\" : \"Marge\", \"age\" : 36, \"children\" : [ \"Bart\", \"Lisa\", \"Maggie\" ] }";
|
|
|
+ Parser parser;
|
|
|
+ std::ostringstream ostr;
|
|
|
+ PrintHandler handler(ostr);
|
|
|
+ parser.setHandler(&handler);
|
|
|
+ parser.parse(json);
|
|
|
+ assert (ostr.str() == "{\"name\":\"Homer\",\"age\":38,\"wife\":\"Marge\",\"age\":36,\"children\":[\"Bart\",\"Lisa\",\"Maggie\"]}");
|
|
|
+
|
|
|
+ handler.setIndent(1);
|
|
|
+ ostr.str("");
|
|
|
+ parser.parse(json);
|
|
|
+ assert (ostr.str() == "{\n"
|
|
|
+ " \"name\" : \"Homer\",\n"
|
|
|
+ " \"age\" : 38,\n"
|
|
|
+ " \"wife\" : \"Marge\",\n"
|
|
|
+ " \"age\" : 36,\n"
|
|
|
+ " \"children\" : [\n"
|
|
|
+ " \"Bart\",\n"
|
|
|
+ " \"Lisa\",\n"
|
|
|
+ " \"Maggie\"\n"
|
|
|
+ " ]\n"
|
|
|
+ "}"
|
|
|
+ );
|
|
|
+
|
|
|
+ handler.setIndent(2);
|
|
|
+ ostr.str("");
|
|
|
+ parser.parse(json);
|
|
|
+ assert (ostr.str() == "{\n"
|
|
|
+ " \"name\" : \"Homer\",\n"
|
|
|
+ " \"age\" : 38,\n"
|
|
|
+ " \"wife\" : \"Marge\",\n"
|
|
|
+ " \"age\" : 36,\n"
|
|
|
+ " \"children\" : [\n"
|
|
|
+ " \"Bart\",\n"
|
|
|
+ " \"Lisa\",\n"
|
|
|
+ " \"Maggie\"\n"
|
|
|
+ " ]\n"
|
|
|
+ "}"
|
|
|
+ );
|
|
|
+
|
|
|
+ handler.setIndent(4);
|
|
|
+ ostr.str("");
|
|
|
+ parser.parse(json);
|
|
|
+ assert (ostr.str() == "{\n"
|
|
|
+ " \"name\" : \"Homer\",\n"
|
|
|
+ " \"age\" : 38,\n"
|
|
|
+ " \"wife\" : \"Marge\",\n"
|
|
|
+ " \"age\" : 36,\n"
|
|
|
+ " \"children\" : [\n"
|
|
|
+ " \"Bart\",\n"
|
|
|
+ " \"Lisa\",\n"
|
|
|
+ " \"Maggie\"\n"
|
|
|
+ " ]\n"
|
|
|
+ "}"
|
|
|
+ );
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
void JSONTest::testStringify()
|
|
|
{
|
|
|
- std::string json = "{ \"name\" : \"Franky\", \"children\" : [ \"Jonas\", \"Ellen\" ] }";
|
|
|
+ std::string json = "{ \"Simpsons\" : { \"husband\" : { \"name\" : \"Homer\" , \"age\" : 38 }, \"wife\" : { \"name\" : \"Marge\", \"age\" : 36 }, "
|
|
|
+ "\"children\" : [ \"Bart\", \"Lisa\", \"Maggie\" ], "
|
|
|
+ "\"address\" : { \"number\" : 742, \"street\" : \"Evergreen Terrace\", \"town\" : \"Springfield\" } } }";
|
|
|
+ Parser parser;
|
|
|
+ Var result;
|
|
|
+
|
|
|
+ try
|
|
|
+ {
|
|
|
+ ParseHandler handler;
|
|
|
+ parser.setHandler(&handler);
|
|
|
+ parser.parse(json);
|
|
|
+ result = handler.result();
|
|
|
+ }
|
|
|
+ catch(JSONException& jsone)
|
|
|
+ {
|
|
|
+ std::cout << jsone.message() << std::endl;
|
|
|
+ assert(false);
|
|
|
+ }
|
|
|
+
|
|
|
+ assert(result.type() == typeid(Object::Ptr));
|
|
|
+ std::ostringstream ostr;
|
|
|
+
|
|
|
+ Stringifier::condense(result, ostr);
|
|
|
+ std::string str = "{"
|
|
|
+ "\"Simpsons\":{"
|
|
|
+ "\"address\":{"
|
|
|
+ "\"number\":742,"
|
|
|
+ "\"street\":\"Evergreen Terrace\","
|
|
|
+ "\"town\":\"Springfield\""
|
|
|
+ "},"
|
|
|
+ "\"children\":["
|
|
|
+ "\"Bart\","
|
|
|
+ "\"Lisa\","
|
|
|
+ "\"Maggie\"],"
|
|
|
+ "\"husband\":{"
|
|
|
+ "\"age\":38,"
|
|
|
+ "\"name\":\"Homer\""
|
|
|
+ "},"
|
|
|
+ "\"wife\":{"
|
|
|
+ "\"age\":36,\"name\":\"Marge\""
|
|
|
+ "}}}";
|
|
|
+ assert (ostr.str() == str);
|
|
|
+
|
|
|
+ ostr.str("");
|
|
|
+ Stringifier::stringify(result, ostr);
|
|
|
+ assert (ostr.str() == str);
|
|
|
+
|
|
|
+ ostr.str("");
|
|
|
+ Stringifier::stringify(result, ostr, 1);
|
|
|
+ str = "{\n"
|
|
|
+ " \"Simpsons\" : {\n"
|
|
|
+ " \"address\" : {\n"
|
|
|
+ " \"number\" : 742,\n"
|
|
|
+ " \"street\" : \"Evergreen Terrace\",\n"
|
|
|
+ " \"town\" : \"Springfield\"\n"
|
|
|
+ " },\n"
|
|
|
+ " \"children\" : [\n"
|
|
|
+ " \"Bart\",\n"
|
|
|
+ " \"Lisa\",\n"
|
|
|
+ " \"Maggie\"\n"
|
|
|
+ " ],\n"
|
|
|
+ " \"husband\" : {\n"
|
|
|
+ " \"age\" : 38,\n"
|
|
|
+ " \"name\" : \"Homer\"\n"
|
|
|
+ " },\n"
|
|
|
+ " \"wife\" : {\n"
|
|
|
+ " \"age\" : 36,\n"
|
|
|
+ " \"name\" : \"Marge\"\n"
|
|
|
+ " }\n"
|
|
|
+ " }\n"
|
|
|
+ "}";
|
|
|
+ assert (ostr.str() == str);
|
|
|
+
|
|
|
+ ostr.str("");
|
|
|
+ Stringifier::stringify(result, ostr, 2);
|
|
|
+ str = "{\n"
|
|
|
+ " \"Simpsons\" : {\n"
|
|
|
+ " \"address\" : {\n"
|
|
|
+ " \"number\" : 742,\n"
|
|
|
+ " \"street\" : \"Evergreen Terrace\",\n"
|
|
|
+ " \"town\" : \"Springfield\"\n"
|
|
|
+ " },\n"
|
|
|
+ " \"children\" : [\n"
|
|
|
+ " \"Bart\",\n"
|
|
|
+ " \"Lisa\",\n"
|
|
|
+ " \"Maggie\"\n"
|
|
|
+ " ],\n"
|
|
|
+ " \"husband\" : {\n"
|
|
|
+ " \"age\" : 38,\n"
|
|
|
+ " \"name\" : \"Homer\"\n"
|
|
|
+ " },\n"
|
|
|
+ " \"wife\" : {\n"
|
|
|
+ " \"age\" : 36,\n"
|
|
|
+ " \"name\" : \"Marge\"\n"
|
|
|
+ " }\n"
|
|
|
+ " }\n"
|
|
|
+ "}";
|
|
|
+ assert (ostr.str() == str);
|
|
|
+
|
|
|
+ ostr.str("");
|
|
|
+ Stringifier::stringify(result, ostr, 4);
|
|
|
+ str = "{\n"
|
|
|
+ " \"Simpsons\" : {\n"
|
|
|
+ " \"address\" : {\n"
|
|
|
+ " \"number\" : 742,\n"
|
|
|
+ " \"street\" : \"Evergreen Terrace\",\n"
|
|
|
+ " \"town\" : \"Springfield\"\n"
|
|
|
+ " },\n"
|
|
|
+ " \"children\" : [\n"
|
|
|
+ " \"Bart\",\n"
|
|
|
+ " \"Lisa\",\n"
|
|
|
+ " \"Maggie\"\n"
|
|
|
+ " ],\n"
|
|
|
+ " \"husband\" : {\n"
|
|
|
+ " \"age\" : 38,\n"
|
|
|
+ " \"name\" : \"Homer\"\n"
|
|
|
+ " },\n"
|
|
|
+ " \"wife\" : {\n"
|
|
|
+ " \"age\" : 36,\n"
|
|
|
+ " \"name\" : \"Marge\"\n"
|
|
|
+ " }\n"
|
|
|
+ " }\n"
|
|
|
+ "}";
|
|
|
+ assert (ostr.str() == str);
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+void JSONTest::testStringifyPreserveOrder()
|
|
|
+{
|
|
|
+ std::string json = "{ \"Simpsons\" : { \"husband\" : { \"name\" : \"Homer\" , \"age\" : 38 }, \"wife\" : { \"name\" : \"Marge\", \"age\" : 36 }, "
|
|
|
+ "\"children\" : [ \"Bart\", \"Lisa\", \"Maggie\" ], "
|
|
|
+ "\"address\" : { \"number\" : 742, \"street\" : \"Evergreen Terrace\", \"town\" : \"Springfield\" } } }";
|
|
|
Parser parser;
|
|
|
Var result;
|
|
|
|
|
|
try
|
|
|
{
|
|
|
- DefaultHandler handler;
|
|
|
+ ParseHandler handler(true);
|
|
|
parser.setHandler(&handler);
|
|
|
parser.parse(json);
|
|
|
result = handler.result();
|
|
|
@@ -822,9 +1045,92 @@ void JSONTest::testStringify()
|
|
|
|
|
|
assert(result.type() == typeid(Object::Ptr));
|
|
|
std::ostringstream ostr;
|
|
|
+
|
|
|
+ Stringifier::condense(result, ostr);
|
|
|
+ assert (ostr.str() == "{\"Simpsons\":{\"husband\":{\"name\":\"Homer\",\"age\":38},\"wife\":{\"name\":\"Marge\",\"age\":36},"
|
|
|
+ "\"children\":[\"Bart\",\"Lisa\",\"Maggie\"],"
|
|
|
+ "\"address\":{\"number\":742,\"street\":\"Evergreen Terrace\",\"town\":\"Springfield\"}}}");
|
|
|
+
|
|
|
+ ostr.str("");
|
|
|
Stringifier::stringify(result, ostr);
|
|
|
- //TODO: need map that does not order for internal container
|
|
|
- assert (ostr.str() == "{\"name\":\"Franky\",\"children\":[\"Jonas\",\"Ellen\"]}");
|
|
|
+ assert (ostr.str() == "{\"Simpsons\":{\"husband\":{\"name\":\"Homer\",\"age\":38},\"wife\":{\"name\":\"Marge\",\"age\":36},"
|
|
|
+ "\"children\":[\"Bart\",\"Lisa\",\"Maggie\"],"
|
|
|
+ "\"address\":{\"number\":742,\"street\":\"Evergreen Terrace\",\"town\":\"Springfield\"}}}");
|
|
|
+
|
|
|
+ ostr.str("");
|
|
|
+ Stringifier::stringify(result, ostr, 1);
|
|
|
+ assert (ostr.str() == "{\n"
|
|
|
+ " \"Simpsons\" : {\n"
|
|
|
+ " \"husband\" : {\n"
|
|
|
+ " \"name\" : \"Homer\",\n"
|
|
|
+ " \"age\" : 38\n"
|
|
|
+ " },\n"
|
|
|
+ " \"wife\" : {\n"
|
|
|
+ " \"name\" : \"Marge\",\n"
|
|
|
+ " \"age\" : 36\n"
|
|
|
+ " },\n"
|
|
|
+ " \"children\" : [\n"
|
|
|
+ " \"Bart\",\n"
|
|
|
+ " \"Lisa\",\n"
|
|
|
+ " \"Maggie\"\n"
|
|
|
+ " ],\n"
|
|
|
+ " \"address\" : {\n"
|
|
|
+ " \"number\" : 742,\n"
|
|
|
+ " \"street\" : \"Evergreen Terrace\",\n"
|
|
|
+ " \"town\" : \"Springfield\"\n"
|
|
|
+ " }\n"
|
|
|
+ " }\n"
|
|
|
+ "}");
|
|
|
+
|
|
|
+ ostr.str("");
|
|
|
+ Stringifier::stringify(result, ostr, 2);
|
|
|
+ assert (ostr.str() == "{\n"
|
|
|
+ " \"Simpsons\" : {\n"
|
|
|
+ " \"husband\" : {\n"
|
|
|
+ " \"name\" : \"Homer\",\n"
|
|
|
+ " \"age\" : 38\n"
|
|
|
+ " },\n"
|
|
|
+ " \"wife\" : {\n"
|
|
|
+ " \"name\" : \"Marge\",\n"
|
|
|
+ " \"age\" : 36\n"
|
|
|
+ " },\n"
|
|
|
+ " \"children\" : [\n"
|
|
|
+ " \"Bart\",\n"
|
|
|
+ " \"Lisa\",\n"
|
|
|
+ " \"Maggie\"\n"
|
|
|
+ " ],\n"
|
|
|
+ " \"address\" : {\n"
|
|
|
+ " \"number\" : 742,\n"
|
|
|
+ " \"street\" : \"Evergreen Terrace\",\n"
|
|
|
+ " \"town\" : \"Springfield\"\n"
|
|
|
+ " }\n"
|
|
|
+ " }\n"
|
|
|
+ "}");
|
|
|
+
|
|
|
+ ostr.str("");
|
|
|
+ Stringifier::stringify(result, ostr, 4);
|
|
|
+ assert (ostr.str() == "{\n"
|
|
|
+ " \"Simpsons\" : {\n"
|
|
|
+ " \"husband\" : {\n"
|
|
|
+ " \"name\" : \"Homer\",\n"
|
|
|
+ " \"age\" : 38\n"
|
|
|
+ " },\n"
|
|
|
+ " \"wife\" : {\n"
|
|
|
+ " \"name\" : \"Marge\",\n"
|
|
|
+ " \"age\" : 36\n"
|
|
|
+ " },\n"
|
|
|
+ " \"children\" : [\n"
|
|
|
+ " \"Bart\",\n"
|
|
|
+ " \"Lisa\",\n"
|
|
|
+ " \"Maggie\"\n"
|
|
|
+ " ],\n"
|
|
|
+ " \"address\" : {\n"
|
|
|
+ " \"number\" : 742,\n"
|
|
|
+ " \"street\" : \"Evergreen Terrace\",\n"
|
|
|
+ " \"town\" : \"Springfield\"\n"
|
|
|
+ " }\n"
|
|
|
+ " }\n"
|
|
|
+ "}");
|
|
|
}
|
|
|
|
|
|
|
|
|
@@ -852,7 +1158,7 @@ void JSONTest::testValidJanssonFiles()
|
|
|
|
|
|
try
|
|
|
{
|
|
|
- DefaultHandler handler;
|
|
|
+ ParseHandler handler;
|
|
|
parser.setHandler(&handler);
|
|
|
parser.parse(fis);
|
|
|
result = handler.result();
|
|
|
@@ -900,7 +1206,7 @@ void JSONTest::testInvalidJanssonFiles()
|
|
|
|
|
|
try
|
|
|
{
|
|
|
- DefaultHandler handler;
|
|
|
+ ParseHandler handler;
|
|
|
parser.setHandler(&handler);
|
|
|
parser.parse(fis);
|
|
|
result = handler.result();
|
|
|
@@ -944,7 +1250,7 @@ void JSONTest::testInvalidUnicodeJanssonFiles()
|
|
|
|
|
|
try
|
|
|
{
|
|
|
- DefaultHandler handler;
|
|
|
+ ParseHandler handler;
|
|
|
parser.setHandler(&handler);
|
|
|
parser.parse(fis);
|
|
|
result = handler.result();
|
|
|
@@ -977,6 +1283,7 @@ void JSONTest::testTemplate()
|
|
|
tpl.render(data, std::cout);
|
|
|
}
|
|
|
|
|
|
+
|
|
|
void JSONTest::testUnicode()
|
|
|
{
|
|
|
const unsigned char supp[] = {0x61, 0xE1, 0xE9, 0x78, 0xED, 0xF3, 0xFA, 0x0};
|
|
|
@@ -988,7 +1295,7 @@ void JSONTest::testUnicode()
|
|
|
Var result;
|
|
|
try
|
|
|
{
|
|
|
- DefaultHandler handler;
|
|
|
+ ParseHandler handler;
|
|
|
parser.setHandler(&handler);
|
|
|
parser.parse(json);
|
|
|
result = handler.result();
|
|
|
@@ -1012,6 +1319,7 @@ void JSONTest::testUnicode()
|
|
|
assert(test.convert<std::string>() == original);
|
|
|
}
|
|
|
|
|
|
+
|
|
|
std::string JSONTest::getTestFilesPath(const std::string& type)
|
|
|
{
|
|
|
std::ostringstream ostr;
|
|
|
@@ -1060,6 +1368,7 @@ CppUnit::Test* JSONTest::suite()
|
|
|
CppUnit_addTest(pSuite, JSONTest, testDouble3Property);
|
|
|
CppUnit_addTest(pSuite, JSONTest, testObjectProperty);
|
|
|
CppUnit_addTest(pSuite, JSONTest, testObjectArray);
|
|
|
+ CppUnit_addTest(pSuite, JSONTest, testArrayOfObjects);
|
|
|
CppUnit_addTest(pSuite, JSONTest, testEmptyArray);
|
|
|
CppUnit_addTest(pSuite, JSONTest, testNestedArray);
|
|
|
CppUnit_addTest(pSuite, JSONTest, testNullElement);
|
|
|
@@ -1071,7 +1380,9 @@ CppUnit::Test* JSONTest::suite()
|
|
|
CppUnit_addTest(pSuite, JSONTest, testDoubleElement);
|
|
|
CppUnit_addTest(pSuite, JSONTest, testOptValue);
|
|
|
CppUnit_addTest(pSuite, JSONTest, testQuery);
|
|
|
+ CppUnit_addTest(pSuite, JSONTest, testPrintHandler);
|
|
|
CppUnit_addTest(pSuite, JSONTest, testStringify);
|
|
|
+ CppUnit_addTest(pSuite, JSONTest, testStringifyPreserveOrder);
|
|
|
CppUnit_addTest(pSuite, JSONTest, testValidJanssonFiles);
|
|
|
CppUnit_addTest(pSuite, JSONTest, testInvalidJanssonFiles);
|
|
|
CppUnit_addTest(pSuite, JSONTest, testInvalidUnicodeJanssonFiles);
|