Repository: johnzon Updated Branches: refs/heads/master f283c1e89 -> f6979d363
JOHNZON-122 equals contract for JsonNumber Project: http://git-wip-us.apache.org/repos/asf/johnzon/repo Commit: http://git-wip-us.apache.org/repos/asf/johnzon/commit/f6979d36 Tree: http://git-wip-us.apache.org/repos/asf/johnzon/tree/f6979d36 Diff: http://git-wip-us.apache.org/repos/asf/johnzon/diff/f6979d36 Branch: refs/heads/master Commit: f6979d363c18fed6ce06f42b635f673e65225b07 Parents: f283c1e Author: rmannibucau <[email protected]> Authored: Mon Jun 5 14:48:55 2017 +0200 Committer: rmannibucau <[email protected]> Committed: Mon Jun 5 14:48:55 2017 +0200 ---------------------------------------------------------------------- .../src/main/java/org/apache/johnzon/core/JsonLongImpl.java | 5 ++++- .../test/java/org/apache/johnzon/core/JsonNumberTest.java | 8 ++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/johnzon/blob/f6979d36/johnzon-core/src/main/java/org/apache/johnzon/core/JsonLongImpl.java ---------------------------------------------------------------------- diff --git a/johnzon-core/src/main/java/org/apache/johnzon/core/JsonLongImpl.java b/johnzon-core/src/main/java/org/apache/johnzon/core/JsonLongImpl.java index 883bde5..0719a3f 100644 --- a/johnzon-core/src/main/java/org/apache/johnzon/core/JsonLongImpl.java +++ b/johnzon-core/src/main/java/org/apache/johnzon/core/JsonLongImpl.java @@ -97,6 +97,9 @@ public final class JsonLongImpl implements JsonNumber, Serializable { @Override public boolean equals(final Object obj) { - return JsonNumber.class.isInstance(obj) && JsonNumber.class.cast(obj).longValue() == value; + if (JsonLongImpl.class.isInstance(obj)) { + return JsonLongImpl.class.cast(obj).value == value; + } + return JsonNumber.class.isInstance(obj) && JsonNumber.class.cast(obj).bigDecimalValue().equals(bigDecimalValue()); } } http://git-wip-us.apache.org/repos/asf/johnzon/blob/f6979d36/johnzon-core/src/test/java/org/apache/johnzon/core/JsonNumberTest.java ---------------------------------------------------------------------- diff --git a/johnzon-core/src/test/java/org/apache/johnzon/core/JsonNumberTest.java b/johnzon-core/src/test/java/org/apache/johnzon/core/JsonNumberTest.java index 55c3754..194017c 100644 --- a/johnzon-core/src/test/java/org/apache/johnzon/core/JsonNumberTest.java +++ b/johnzon-core/src/test/java/org/apache/johnzon/core/JsonNumberTest.java @@ -28,9 +28,17 @@ import java.io.StringReader; import java.io.StringWriter; import java.math.BigInteger; +import static org.junit.Assert.assertFalse; public class JsonNumberTest { + @Test + public void equals() { + final JsonNumber a = Json.createObjectBuilder().add("a", 1).build().getJsonNumber("a"); + final JsonNumber b = Json.createObjectBuilder().add("b", 1.1).build().getJsonNumber("b"); + assertFalse(a.equals(b)); + assertFalse(b.equals(a)); + } @Test(expected=ArithmeticException.class) public void testBigIntegerExact() {
