mirror of
https://github.com/stleary/JSON-java.git
synced 2025-08-03 03:15:32 -04:00
Merge pull request #613 from stleary/fix-similar-check
Fixes Issue #611 JsonObject.similar() returns after number entry check
This commit is contained in:
commit
c0e467c848
@ -1383,7 +1383,9 @@ public class JSONArray implements Iterable<Object> {
|
||||
return false;
|
||||
}
|
||||
} else if (valueThis instanceof Number && valueOther instanceof Number) {
|
||||
return JSONObject.isNumberSimilar((Number)valueThis, (Number)valueOther);
|
||||
if (!JSONObject.isNumberSimilar((Number)valueThis, (Number)valueOther)) {
|
||||
return false;
|
||||
}
|
||||
} else if (!valueThis.equals(valueOther)) {
|
||||
return false;
|
||||
}
|
||||
|
@ -2108,7 +2108,9 @@ public class JSONObject {
|
||||
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;
|
||||
}
|
||||
|
@ -87,6 +87,7 @@ public class JSONArrayTest {
|
||||
@Test
|
||||
public void verifySimilar() {
|
||||
final String string1 = "HasSameRef";
|
||||
final String string2 = "HasDifferentRef";
|
||||
JSONArray obj1 = new JSONArray()
|
||||
.put("abc")
|
||||
.put(string1)
|
||||
@ -102,9 +103,19 @@ public class JSONArrayTest {
|
||||
.put(new String(string1))
|
||||
.put(2);
|
||||
|
||||
assertFalse("Should eval to false", obj1.similar(obj2));
|
||||
JSONArray obj4 = new JSONArray()
|
||||
.put("abc")
|
||||
.put(2.0)
|
||||
.put(new String(string1));
|
||||
|
||||
assertTrue("Should eval to true", obj1.similar(obj3));
|
||||
JSONArray obj5 = new JSONArray()
|
||||
.put("abc")
|
||||
.put(2.0)
|
||||
.put(new String(string2));
|
||||
|
||||
assertFalse("obj1-obj2 Should eval to false", obj1.similar(obj2));
|
||||
assertTrue("obj1-obj3 Should eval to true", obj1.similar(obj3));
|
||||
assertFalse("obj4-obj5 Should eval to false", obj4.similar(obj5));
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -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)
|
||||
@ -120,15 +121,22 @@ public class JSONObjectTest {
|
||||
.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));
|
||||
|
||||
assertTrue("Should eval to true", obj1.similar(obj4));
|
||||
JSONObject obj5 = new JSONObject()
|
||||
.put("key1", "abc")
|
||||
.put("key2", 2.0)
|
||||
.put("key3", new String(string2));
|
||||
|
||||
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));
|
||||
// verify that a double and big decimal are "similar"
|
||||
assertTrue("should eval to true",new JSONObject().put("a",1.1d).similar(new JSONObject("{\"a\":1.1}")));
|
||||
|
||||
// Confirm #618 is fixed (compare should not exit early if similar numbers are found)
|
||||
// Note that this test may not work if the JSONObject map entry order changes
|
||||
JSONObject first = new JSONObject("{\"a\": 1, \"b\": 2, \"c\": 3}");
|
||||
JSONObject second = new JSONObject("{\"a\": 1, \"b\": 2.0, \"c\": 4}");
|
||||
assertFalse("first-second should eval to false", first.similar(second));
|
||||
}
|
||||
|
||||
@Test
|
||||
|
Loading…
x
Reference in New Issue
Block a user