From cfbc306673ba3a4bec76ef6607db6401beb9c09b Mon Sep 17 00:00:00 2001 From: stleary Date: Sun, 18 Jul 2021 10:32:49 -0500 Subject: [PATCH] Fixes Issue #611 JsonObject.similar() returns after number entry check --- src/main/java/org/json/JSONObject.java | 4 +++- src/test/java/org/json/junit/JSONObjectTest.java | 13 +++++++++---- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/src/main/java/org/json/JSONObject.java b/src/main/java/org/json/JSONObject.java index 97a6df8d2..6d7d340c6 100644 --- a/src/main/java/org/json/JSONObject.java +++ b/src/main/java/org/json/JSONObject.java @@ -2092,7 +2092,9 @@ public boolean similar(Object other) { return false; } } else if (valueThis instanceof Number && valueOther instanceof Number) { - return isNumberSimilar((Number)valueThis, (Number)valueOther); + if (!isNumberSimilar((Number)valueThis, (Number)valueOther)) { + return false; + }; } else if (!valueThis.equals(valueOther)) { return false; } diff --git a/src/test/java/org/json/junit/JSONObjectTest.java b/src/test/java/org/json/junit/JSONObjectTest.java index 0d5acdd2e..39c020fe6 100644 --- a/src/test/java/org/json/junit/JSONObjectTest.java +++ b/src/test/java/org/json/junit/JSONObjectTest.java @@ -100,6 +100,7 @@ public class JSONObjectTest { @Test public void verifySimilar() { final String string1 = "HasSameRef"; + final String string2 = "HasDifferentRef"; JSONObject obj1 = new JSONObject() .put("key1", "abc") .put("key2", 2) @@ -119,12 +120,16 @@ public void verifySimilar() { .put("key1", "abc") .put("key2", 2.0) .put("key3", new String(string1)); - - assertFalse("Should eval to false", obj1.similar(obj2)); - assertTrue("Should eval to true", obj1.similar(obj3)); + JSONObject obj5 = new JSONObject() + .put("key1", "abc") + .put("key2", 2.0) + .put("key3", new String(string2)); - assertTrue("Should eval to true", obj1.similar(obj4)); + assertFalse("obj1-obj2 Should eval to false", obj1.similar(obj2)); + assertTrue("obj1-obj3 Should eval to true", obj1.similar(obj3)); + assertTrue("obj1-obj4 Should eval to true", obj1.similar(obj4)); + assertFalse("obj1-obj5 Should eval to false", obj1.similar(obj5)); }