You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@johnzon.apache.org by st...@apache.org on 2017/02/26 21:18:41 UTC
johnzon git commit: JOHNZON-103 add test for Json.createDiff(source,
target)
Repository: johnzon
Updated Branches:
refs/heads/master 1900e037a -> 61a130e3e
JOHNZON-103 add test for Json.createDiff(source, target)
Commented out for now, JsonPatchTest#testDiff
Implementation of the logic is still TODO.
Project: http://git-wip-us.apache.org/repos/asf/johnzon/repo
Commit: http://git-wip-us.apache.org/repos/asf/johnzon/commit/61a130e3
Tree: http://git-wip-us.apache.org/repos/asf/johnzon/tree/61a130e3
Diff: http://git-wip-us.apache.org/repos/asf/johnzon/diff/61a130e3
Branch: refs/heads/master
Commit: 61a130e3e75b57a86d8f6bdd2395616abbf69afc
Parents: 1900e03
Author: Mark Struberg <st...@apache.org>
Authored: Sun Feb 26 22:17:26 2017 +0100
Committer: Mark Struberg <st...@apache.org>
Committed: Sun Feb 26 22:17:26 2017 +0100
----------------------------------------------------------------------
.../org/apache/johnzon/core/JsonPatchTest.java | 38 ++++++++++++++++++++
1 file changed, 38 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/johnzon/blob/61a130e3/johnzon-core/src/test/java/org/apache/johnzon/core/JsonPatchTest.java
----------------------------------------------------------------------
diff --git a/johnzon-core/src/test/java/org/apache/johnzon/core/JsonPatchTest.java b/johnzon-core/src/test/java/org/apache/johnzon/core/JsonPatchTest.java
index a54e7cd..dc54c0c 100644
--- a/johnzon-core/src/test/java/org/apache/johnzon/core/JsonPatchTest.java
+++ b/johnzon-core/src/test/java/org/apache/johnzon/core/JsonPatchTest.java
@@ -969,6 +969,44 @@ public class JsonPatchTest {
}
+ //X @Test disabled for now
+ //X TODO implement the diff logic!
+ public void testDiff() {
+ // {"a":"xa","b":2,"c":{"d":"xd"},"e":[1,2,3]}
+ String jsonA = "{\"a\":\"xa\",\"b\":2,\"c\":{\"d\":\"xd\"},\"e\":[1,2,3]}";
+
+ // {"a":"xa","c":{"d":"xd", "d2":"xd2"},"e":[1,3],"f":"xe"}
+ String jsonB = "{\"a\":\"xa\",\"c\":{\"d\":\"xd\", \"d2\":\"xd2\"},\"e\":[1,3],\"f\":\"xe\"}";
+
+ // this results in 4 diff operations:
+ // removing b, adding d2, removing 2 from e, adding f
+ JsonPatch jsonPatch = Json.createDiff(Json.createReader(new StringReader(jsonA)).readObject(),
+ Json.createReader(new StringReader(jsonB)).readObject());
+ Assert.assertNotNull(jsonPatch);
+ JsonArray patchOperations = jsonPatch.toJsonArray();
+ Assert.assertNotNull(patchOperations);
+ Assert.assertEquals(4, patchOperations.size());
+ containsOperation(patchOperations, JsonPatch.Operation.REMOVE, "/b", null);
+ containsOperation(patchOperations, JsonPatch.Operation.ADD, "/c/d2", "xd2");
+ containsOperation(patchOperations, JsonPatch.Operation.REMOVE, "/e/2", null);
+ containsOperation(patchOperations, JsonPatch.Operation.ADD, "/f", "xe");
+ }
+
+ private void containsOperation(JsonArray patchOperations, JsonPatch.Operation patchOperation,
+ String jsonPointer, String value) {
+ for (JsonValue operation : patchOperations) {
+ if (operation instanceof JsonObject &&
+ patchOperation.operationName().equalsIgnoreCase(((JsonObject) operation).getString("op"))) {
+ Assert.assertEquals(jsonPointer, ((JsonObject) operation).getString("path"));
+
+ if (value != null) {
+ Assert.assertEquals(value, ((JsonObject) operation).getString("value"));
+ }
+ }
+ }
+ Assert.fail("patchOperations does not contain " + patchOperation + " " + jsonPointer);
+ }
+
private static String toJsonString(JsonStructure value) {
StringWriter writer = new StringWriter();