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 <[email protected]>
Authored: Sun Feb 26 22:17:26 2017 +0100
Committer: Mark Struberg <[email protected]>
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();

Reply via email to