Skip to content

Commit

Permalink
added unit test for issue #76
Browse files Browse the repository at this point in the history
  • Loading branch information
nlohmann committed May 30, 2015
1 parent 58d7342 commit e2035df
Showing 1 changed file with 32 additions and 0 deletions.
32 changes: 32 additions & 0 deletions test/unit.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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()));
}
}

0 comments on commit e2035df

Please sign in to comment.