From e2035df9570cc48c4686f064265e979d5851165b Mon Sep 17 00:00:00 2001 From: Niels Date: Sat, 30 May 2015 16:47:20 +0200 Subject: [PATCH] added unit test for issue #76 --- test/unit.cpp | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/test/unit.cpp b/test/unit.cpp index d304934c..6e5e468e 100644 --- a/test/unit.cpp +++ b/test/unit.cpp @@ -8747,4 +8747,36 @@ TEST_CASE("regression tests") {"game_type", t} })); } + + SECTION("issue #76 - dump() / parse() not idempotent") + { + // create JSON object + json fields; + fields["one"] = std::string("one"); + fields["two"] = std::string("two three"); + fields["three"] = std::string("three \"four\""); + + // create another JSON object by deserializing the serialization + std::string payload = fields.dump(); + json parsed_fields = json::parse(payload); + + // check individual fields to match both objects + CHECK(parsed_fields["one"] == fields["one"]); + CHECK(parsed_fields["two"] == fields["two"]); + CHECK(parsed_fields["three"] == fields["three"]); + + // check individual fields to match original input + CHECK(parsed_fields["one"] == std::string("one")); + CHECK(parsed_fields["two"] == std::string("two three")); + CHECK(parsed_fields["three"] == std::string("three \"four\"")); + + // check equality of the objects + CHECK(parsed_fields == fields); + + // check equality of the serialized objects + CHECK(fields.dump() == parsed_fields.dump()); + + // check everything in one line + CHECK(fields == json::parse(fields.dump())); + } }