You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@johnzon.apache.org by rm...@apache.org on 2017/06/05 12:49:03 UTC

johnzon git commit: JOHNZON-122 equals contract for JsonNumber

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 <rm...@apache.org>
Authored: Mon Jun 5 14:48:55 2017 +0200
Committer: rmannibucau <rm...@apache.org>
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() {