Preserve entries order in DynamicStruct #2410 (#2413)

* Preserve entries order in DynamicStruct #2410

* disable C++11 default

* ifdef C++11 code
This commit is contained in:
Aleksandar Fabijanic
2018-08-01 08:06:59 -07:00
committed by GitHub
parent 6107b43a7b
commit 231ef2762d
11 changed files with 825 additions and 73 deletions

View File

@@ -1587,7 +1587,6 @@ void JSONTest::testStringifyPreserveOrder()
std::ostringstream ostr;
Stringifier::condense(result, ostr);
std::cout << ostr.str() << std::endl;
assertTrue (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\"}}}");
@@ -1674,7 +1673,12 @@ void JSONTest::testStringifyPreserveOrder()
"}");
Poco::DynamicStruct ds = *result.extract<Object::Ptr>();
assertTrue(ds.toString() == "{ \"Simpsons\" : { \"address\" : { \"number\" : 742, \"street\" : \"Evergreen Terrace\", \"town\" : \"Springfield\" }, "
"\"children\" : [ \"Bart\", \"Lisa\", \"Maggie\" ], "
"\"husband\" : { \"age\" : 38, \"name\" : \"Homer\" }, "
"\"wife\" : { \"age\" : 36, \"name\" : \"Marge\" } } }");
assertTrue (ds["Simpsons"].isStruct());
assertFalse(ds["Simpsons"].isOrdered());
assertTrue (ds["Simpsons"]["husband"].isStruct());
assertTrue (ds["Simpsons"]["husband"]["name"] == "Homer");
assertTrue (ds["Simpsons"]["husband"]["age"] == 38);
@@ -1692,6 +1696,17 @@ void JSONTest::testStringifyPreserveOrder()
assertTrue (ds["Simpsons"]["address"]["number"] == 742);
assertTrue (ds["Simpsons"]["address"]["street"] == "Evergreen Terrace");
assertTrue (ds["Simpsons"]["address"]["town"] == "Springfield");
#ifdef POCO_ENABLE_CPP11
Poco::OrderedDynamicStruct ods = *result.extract<Object::Ptr>();
assertTrue(ods["Simpsons"].isStruct());
assertTrue(ods["Simpsons"].isOrdered());
assertTrue(ods.toString() == "{ \"Simpsons\" : { \"husband\" : { \"name\" : \"Homer\", \"age\" : 38 }, "
"\"wife\" : { \"name\" : \"Marge\", \"age\" : 36 }, "
"\"children\" : [ \"Bart\", \"Lisa\", \"Maggie\" ], "
"\"address\" : { \"number\" : 742, \"street\" : \"Evergreen Terrace\", "
"\"town\" : \"Springfield\" } } }");
#endif // POCO_ENABLE_CPP11
}