From e3bd7ed37ca99275b205db9bf209c2dbc149dd9d Mon Sep 17 00:00:00 2001 From: ChuXiyes <72455466+ChuXiyes@users.noreply.github.com> Date: Fri, 23 Apr 2021 21:13:54 +0800 Subject: [PATCH 1/5] Add files via upload --- .../skyscreamer/jsonassert/JSONCompareResult.java | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/skyscreamer/jsonassert/JSONCompareResult.java b/src/main/java/org/skyscreamer/jsonassert/JSONCompareResult.java index 28406fbe..665c8c02 100644 --- a/src/main/java/org/skyscreamer/jsonassert/JSONCompareResult.java +++ b/src/main/java/org/skyscreamer/jsonassert/JSONCompareResult.java @@ -238,13 +238,21 @@ private String formatUnexpected(String field, Object actual) { + describe(actual) + "\n"; } - +//changed place + /**CS304 Issue link: https://github.com/skyscreamer/JSONassert/issues/130 + * modified by adding a case when {@code value} == null, + * return a String "null" to avoid {@exception NullPointer} + */ private static String describe(Object value) { if (value instanceof JSONArray) { return "a JSON array"; } else if (value instanceof JSONObject) { return "a JSON object"; - } else { + } + else if(value == null){//this else if is added + return "null"; + } + else { return value.toString(); } } From bfdd60c460df160495f1e55ec21894b3e1232129 Mon Sep 17 00:00:00 2001 From: ChuXiyes <72455466+ChuXiyes@users.noreply.github.com> Date: Fri, 23 Apr 2021 21:14:49 +0800 Subject: [PATCH 2/5] Update JSONCompareResult.java --- src/main/java/org/skyscreamer/jsonassert/JSONCompareResult.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/org/skyscreamer/jsonassert/JSONCompareResult.java b/src/main/java/org/skyscreamer/jsonassert/JSONCompareResult.java index 665c8c02..ddb5ad47 100644 --- a/src/main/java/org/skyscreamer/jsonassert/JSONCompareResult.java +++ b/src/main/java/org/skyscreamer/jsonassert/JSONCompareResult.java @@ -238,7 +238,7 @@ private String formatUnexpected(String field, Object actual) { + describe(actual) + "\n"; } -//changed place + /**CS304 Issue link: https://github.com/skyscreamer/JSONassert/issues/130 * modified by adding a case when {@code value} == null, * return a String "null" to avoid {@exception NullPointer} From 81fbfa26cd5b9b6ce82936a88fe3b6f7a6ffde18 Mon Sep 17 00:00:00 2001 From: ChuXiyes <72455466+ChuXiyes@users.noreply.github.com> Date: Fri, 23 Apr 2021 21:16:43 +0800 Subject: [PATCH 3/5] fix 130 --- .../jsonassert/comparator/DefaultComparator.java | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/main/java/org/skyscreamer/jsonassert/comparator/DefaultComparator.java b/src/main/java/org/skyscreamer/jsonassert/comparator/DefaultComparator.java index bc71eae4..a612fbdf 100644 --- a/src/main/java/org/skyscreamer/jsonassert/comparator/DefaultComparator.java +++ b/src/main/java/org/skyscreamer/jsonassert/comparator/DefaultComparator.java @@ -47,6 +47,15 @@ public void compareJSON(String prefix, JSONObject expected, JSONObject actual, J } } + + /**CS304 Issue link: https://github.com/skyscreamer/JSONassert/issues/130 + * modified by adding {@code return} to the second {@code if}. + * because one of the {@param expectedValue} and {@param actualValue} + * should be null can enter the the second {@code if}, + * after that if continue running, the next function {@code .getClass()} + * will always cause a {@exception NullPointer}. + * to avoid that case the {@code return} is added to the second {@code if}. + */ @Override public void compareValues(String prefix, Object expectedValue, Object actualValue, JSONCompareResult result) throws JSONException { @@ -55,6 +64,7 @@ public void compareValues(String prefix, Object expectedValue, Object actualValu } if ((expectedValue == null && actualValue != null) || (expectedValue != null && actualValue == null)) { result.fail(prefix, expectedValue, actualValue); + return; } if (areNumbers(expectedValue, actualValue)) { if (areNotSameDoubles(expectedValue, actualValue)) { From c78465515a72f33fa1d4318635c1ada7c40458c7 Mon Sep 17 00:00:00 2001 From: ChuXiyes <72455466+ChuXiyes@users.noreply.github.com> Date: Fri, 23 Apr 2021 21:19:18 +0800 Subject: [PATCH 4/5] fix 130 --- src/main/java/org/skyscreamer/jsonassert/JSONCompareResult.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/org/skyscreamer/jsonassert/JSONCompareResult.java b/src/main/java/org/skyscreamer/jsonassert/JSONCompareResult.java index ddb5ad47..5b82a30d 100644 --- a/src/main/java/org/skyscreamer/jsonassert/JSONCompareResult.java +++ b/src/main/java/org/skyscreamer/jsonassert/JSONCompareResult.java @@ -249,7 +249,7 @@ private static String describe(Object value) { } else if (value instanceof JSONObject) { return "a JSON object"; } - else if(value == null){//this else if is added + else if(value == null){ return "null"; } else { From eb9a404be4150797cfd6a5581a95cc4c74d48520 Mon Sep 17 00:00:00 2001 From: ChuXiyes <72455466+ChuXiyes@users.noreply.github.com> Date: Sat, 15 May 2021 15:22:28 +0800 Subject: [PATCH 5/5] update JSONCompareResult.java to fix issue 127 to fix issue 127. I consider the JSON adding a "," after a closing object tag in an array of objects to a common JSON to cpmpare. If test not passed, inform of the invalid JSON. --- .../jsonassert/JSONCompareResult.java | 22 ++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/src/main/java/org/skyscreamer/jsonassert/JSONCompareResult.java b/src/main/java/org/skyscreamer/jsonassert/JSONCompareResult.java index 5b82a30d..a8a913f4 100644 --- a/src/main/java/org/skyscreamer/jsonassert/JSONCompareResult.java +++ b/src/main/java/org/skyscreamer/jsonassert/JSONCompareResult.java @@ -192,13 +192,29 @@ public JSONCompareResult fail(String field, ValueMatcherException exception) { return this; } + /**CS304 Issue link: https://github.com/skyscreamer/JSONassert/issues/127 + * modified by adding a case when {@code expected} or {@code actual} == null, + * which the JSON may be an invalid JSON, + * return a warning sentence to inform the tester. + */ private String formatFailureMessage(String field, Object expected, Object actual) { - return field + String describeExp = describe(expected); + String describeAct = describe(actual); + String message = field + "\nExpected: " - + describe(expected) + + describeExp + "\n got: " - + describe(actual) + + describeAct + "\n"; + if(describeExp.equals("null")){ + message += "the expected JSON may be an invalid JSON" + + "\n"; + } + if(describeAct.equals("null")){ + message += "the actual JSON may be an invalid JSON" + + "\n"; + } + return message; } /**