🐛 fix bug in diff function #1983

parent b7be613b
......@@ -7930,7 +7930,7 @@ class basic_json
result.push_back(
{
{"op", "add"},
{"path", path + "/" + std::to_string(i)},
{"path", path + "/-"},
{"value", target[i]}
});
++i;
......
......@@ -22741,7 +22741,7 @@ class basic_json
result.push_back(
{
{"op", "add"},
{"path", path + "/" + std::to_string(i)},
{"path", path + "/-"},
{"value", target[i]}
});
++i;
......
......@@ -1896,6 +1896,14 @@ TEST_CASE("regression tests")
static_assert(!std::is_constructible<json, std::tuple<NotSerializableData, std::string>>::value, "");
static_assert(std::is_constructible<json, std::tuple<int, std::string>>::value, "");
}
SECTION("issue #1983 - JSON patch diff for op=add formation is not as per standard (RFC 6902)")
{
const auto source = R"({ "foo": [ "1", "2" ] })"_json;
const auto target = R"({"foo": [ "1", "2", "3" ]})"_json;
const auto result = json::diff(source, target);
CHECK(result.dump() == R"([{"op":"add","path":"/foo/-","value":"3"}])");
}
}
#if not defined(JSON_NOEXCEPTION)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment