Daniel Kurka has submitted this change and it was merged.

Change subject: adding compare for several number types
......................................................................


adding compare for several number types

-Byte.compare
-Short.compare
-Integer.compare
-Long.compare
-Float.compare

(Double already exists)

fixes issue 7998

Change-Id: Ib33c93ff0fb3f7e4b93994a29d6e2a65898be246
Review-Link: https://gwt-review.googlesource.com/#/c/3180/
---
M user/super/com/google/gwt/emul/java/lang/Byte.java
M user/super/com/google/gwt/emul/java/lang/Double.java
M user/super/com/google/gwt/emul/java/lang/Float.java
M user/super/com/google/gwt/emul/java/lang/Integer.java
M user/super/com/google/gwt/emul/java/lang/Long.java
M user/super/com/google/gwt/emul/java/lang/Short.java
M user/test/com/google/gwt/emultest/java/lang/ByteTest.java
M user/test/com/google/gwt/emultest/java/lang/FloatTest.java
M user/test/com/google/gwt/emultest/java/lang/IntegerTest.java
M user/test/com/google/gwt/emultest/java/lang/LongTest.java
M user/test/com/google/gwt/emultest/java/lang/ShortTest.java
11 files changed, 85 insertions(+), 51 deletions(-)

Approvals:
  Leeroy Jenkins: Verified
  Goktug Gokdogan: Looks good to me, approved



diff --git a/user/super/com/google/gwt/emul/java/lang/Byte.java b/user/super/com/google/gwt/emul/java/lang/Byte.java
index 664589e..ec3e4d9 100644
--- a/user/super/com/google/gwt/emul/java/lang/Byte.java
+++ b/user/super/com/google/gwt/emul/java/lang/Byte.java
@@ -33,6 +33,10 @@
     private static Byte[] boxedValues = new Byte[256];
   }

+  public static int compare(byte x, byte y) {
+    return x - y;
+  }
+
   public static Byte decode(String s) throws NumberFormatException {
return Byte.valueOf((byte) __decodeAndValidateInt(s, MIN_VALUE, MAX_VALUE));
   }
@@ -93,13 +97,7 @@
   }

   public int compareTo(Byte b) {
-    if (value < b.value) {
-      return -1;
-    } else if (value > b.value) {
-      return 1;
-    } else {
-      return 0;
-    }
+    return compare(value, b.value);
   }

   @Override
diff --git a/user/super/com/google/gwt/emul/java/lang/Double.java b/user/super/com/google/gwt/emul/java/lang/Double.java
index e32f9d2..74bdcd9 100644
--- a/user/super/com/google/gwt/emul/java/lang/Double.java
+++ b/user/super/com/google/gwt/emul/java/lang/Double.java
@@ -86,22 +86,24 @@
   };

   public static int compare(double x, double y) {
+    if (x < y) {
+      return -1;
+    }
+    if (x > y) {
+      return 1;
+    }
+    if (x == y) {
+      return 0;
+    }
+
     if (isNaN(x)) {
       if (isNaN(y)) {
         return 0;
       } else {
         return 1;
       }
-    } else if (isNaN(y)) {
-      return -1;
-    }
-
-    if (x < y) {
-      return -1;
-    } else if (x > y) {
-      return 1;
     } else {
-      return 0;
+      return -1;
     }
   }

diff --git a/user/super/com/google/gwt/emul/java/lang/Float.java b/user/super/com/google/gwt/emul/java/lang/Float.java
index fe4bc2b..84e2ef1 100644
--- a/user/super/com/google/gwt/emul/java/lang/Float.java
+++ b/user/super/com/google/gwt/emul/java/lang/Float.java
@@ -34,13 +34,7 @@
   private static final long POWER_32_INT = 4294967296L;

   public static int compare(float x, float y) {
-    if (x < y) {
-      return -1;
-    } else if (x > y) {
-      return 1;
-    } else {
-      return 0;
-    }
+    return Double.compare(x, y);
   }

   public static int floatToIntBits(float value) {
@@ -187,13 +181,7 @@
   }

   public int compareTo(Float b) {
-    if (value < b.value) {
-      return -1;
-    } else if (value > b.value) {
-      return 1;
-    } else {
-      return 0;
-    }
+    return compare(value, b.value);
   }

   @Override
diff --git a/user/super/com/google/gwt/emul/java/lang/Integer.java b/user/super/com/google/gwt/emul/java/lang/Integer.java
index 04e2b00..a0c2f6f 100644
--- a/user/super/com/google/gwt/emul/java/lang/Integer.java
+++ b/user/super/com/google/gwt/emul/java/lang/Integer.java
@@ -57,6 +57,10 @@
     return x & 0x0000003f;
   }

+  public static int compare(int x, int y) {
+    return signum(x - y);
+  }
+
   public static Integer decode(String s) throws NumberFormatException {
return Integer.valueOf((int) __decodeAndValidateInt(s, MIN_VALUE, MAX_VALUE));
   }
@@ -287,13 +291,7 @@
   }

   public int compareTo(Integer b) {
-    if (value < b.value) {
-      return -1;
-    } else if (value > b.value) {
-      return 1;
-    } else {
-      return 0;
-    }
+    return compare(value, b.value);
   }

   @Override
diff --git a/user/super/com/google/gwt/emul/java/lang/Long.java b/user/super/com/google/gwt/emul/java/lang/Long.java
index c0b08d7..eaee9ec 100644
--- a/user/super/com/google/gwt/emul/java/lang/Long.java
+++ b/user/super/com/google/gwt/emul/java/lang/Long.java
@@ -58,6 +58,10 @@
     return Integer.bitCount(high) + Integer.bitCount(low);
   }

+  public static int compare(long x, long y) {
+    return signum(x - y);
+  }
+
   public static Long decode(String s) throws NumberFormatException {
     __Decode decode = __decodeNumberString(s);
     return new Long(parseLong(decode.payload, decode.radix));
@@ -279,13 +283,7 @@
   }

   public int compareTo(Long b) {
-    if (value < b.value) {
-      return -1;
-    } else if (value > b.value) {
-      return 1;
-    } else {
-      return 0;
-    }
+    return compare(value, b.value);
   }

   @Override
diff --git a/user/super/com/google/gwt/emul/java/lang/Short.java b/user/super/com/google/gwt/emul/java/lang/Short.java
index 04d7bff..93c2243 100644
--- a/user/super/com/google/gwt/emul/java/lang/Short.java
+++ b/user/super/com/google/gwt/emul/java/lang/Short.java
@@ -33,6 +33,10 @@
     private static Short[] boxedValues = new Short[256];
   }

+  public static int compare(short x, short y) {
+    return x - y;
+  }
+
   public static Short decode(String s) throws NumberFormatException {
return Short.valueOf((short) __decodeAndValidateInt(s, MIN_VALUE, MAX_VALUE));
   }
@@ -97,13 +101,7 @@
   }

   public int compareTo(Short b) {
-    if (value < b.value) {
-      return -1;
-    } else if (value > b.value) {
-      return 1;
-    } else {
-      return 0;
-    }
+    return compare(value, b.value);
   }

   @Override
diff --git a/user/test/com/google/gwt/emultest/java/lang/ByteTest.java b/user/test/com/google/gwt/emultest/java/lang/ByteTest.java
index bf4ab4a..fc14f79 100644
--- a/user/test/com/google/gwt/emultest/java/lang/ByteTest.java
+++ b/user/test/com/google/gwt/emultest/java/lang/ByteTest.java
@@ -32,6 +32,12 @@
     assertEquals(8, Byte.SIZE);
   }

+  public void testCompare() {
+ assertTrue("Byte.compare failed for 1 < 2", Byte.compare((byte) 1, (byte) 2) < 0); + assertTrue("Byte.compare failed for 2 > 1", Byte.compare((byte) 2, (byte) 1) > 0);
+    assertEquals(0, Byte.compare((byte) 1, (byte) 1));
+  }
+
   public void testStatics() {
     // test the new 1.5 statics... older stuff "assumed to work"
     assertEquals(0, Byte.valueOf((byte) 0).intValue());
diff --git a/user/test/com/google/gwt/emultest/java/lang/FloatTest.java b/user/test/com/google/gwt/emultest/java/lang/FloatTest.java
index 67f5be6..8d0492d 100644
--- a/user/test/com/google/gwt/emultest/java/lang/FloatTest.java
+++ b/user/test/com/google/gwt/emultest/java/lang/FloatTest.java
@@ -52,6 +52,34 @@
     }
   }

+  public void testCompare() {
+ assertTrue("Float.compare failed for 1 < 2", Float.compare(1f, 2f) < 0); + assertTrue("Float.compare failed for 2 > 1", Float.compare(2f, 1f) > 0);
+    assertEquals(0, Float.compare(1f, 1f));
+
+    assertEquals(0, Float.compare(Float.NaN, Float.NaN));
+    assertTrue(Float.compare(0.0f, Float.NaN) < 0);
+    assertTrue(Float.compare(Float.NaN, Float.POSITIVE_INFINITY) > 0);
+    assertTrue(Float.compare(Float.NaN, 0.0f) > 0);
+    assertTrue(Float.compare(Float.POSITIVE_INFINITY, Float.NaN) < 0);
+  }
+
+  public void testCompareTo() {
+    Float float1 = new Float(1f);
+    Float float2 = new Float(2f);
+    Float floatNaN1 = new Float(Float.NaN);
+
+    assertTrue("Float.compare failed for 1 < 2", float1.compareTo(2f) < 0);
+    assertTrue("Float.compare failed for 2 > 1", float2.compareTo(1f) > 0);
+    assertEquals(0, float1.compareTo(float1));
+
+    assertEquals(0, floatNaN1.compareTo(new Float(Float.NaN)));
+    assertTrue(new Float(0.0f).compareTo(new Float(Float.NaN)) < 0);
+ assertTrue(floatNaN1.compareTo(new Float(Float.POSITIVE_INFINITY)) > 0);
+    assertTrue(floatNaN1.compareTo(new Float(0.0f)) > 0);
+ assertTrue(new Float(Float.POSITIVE_INFINITY).compareTo(new Float(Float.NaN)) < 0);
+  }
+
   public void testFloatConstants() {
     assertTrue(Float.isNaN(Float.NaN));
     assertTrue(Float.isInfinite(Float.NEGATIVE_INFINITY));
diff --git a/user/test/com/google/gwt/emultest/java/lang/IntegerTest.java b/user/test/com/google/gwt/emultest/java/lang/IntegerTest.java
index d36d607..925ab15 100644
--- a/user/test/com/google/gwt/emultest/java/lang/IntegerTest.java
+++ b/user/test/com/google/gwt/emultest/java/lang/IntegerTest.java
@@ -114,6 +114,12 @@
     assertEquals(1, Integer.bitCount(Integer.MIN_VALUE));
   }

+  public void testCompare() {
+ assertTrue("Integer.compare failed for 1 < 2", Integer.compare(1, 2) < 0); + assertTrue("Integer.compare failed for 2 > 1", Integer.compare(2, 1) > 0);
+    assertEquals(0, Integer.compare(1, 1));
+  }
+
   public void testCompareTo() {
     assertEquals(-1, new Integer(12345).compareTo(new Integer(12346)));
     assertEquals(1, new Integer("12345").compareTo(new Integer(12344)));
diff --git a/user/test/com/google/gwt/emultest/java/lang/LongTest.java b/user/test/com/google/gwt/emultest/java/lang/LongTest.java
index f1124f6..8a4cce1 100644
--- a/user/test/com/google/gwt/emultest/java/lang/LongTest.java
+++ b/user/test/com/google/gwt/emultest/java/lang/LongTest.java
@@ -44,6 +44,12 @@
     assertEquals(1, Long.bitCount(Long.MIN_VALUE));
   }

+  public void testCompare() {
+    assertTrue("Long.compare failed for 1 < 2", Long.compare(1L, 2L) < 0);
+    assertTrue("Long.compare failed for 2 > 1", Long.compare(2L, 1L) > 0);
+    assertEquals(0, Long.compare(1L, 1L));
+  }
+
   public void testConstants() {
     assertEquals(64, Long.SIZE);
     assertEquals(0x7fffffffffffffffL, Long.MAX_VALUE);
diff --git a/user/test/com/google/gwt/emultest/java/lang/ShortTest.java b/user/test/com/google/gwt/emultest/java/lang/ShortTest.java
index d23d5cd..25aaebe 100644
--- a/user/test/com/google/gwt/emultest/java/lang/ShortTest.java
+++ b/user/test/com/google/gwt/emultest/java/lang/ShortTest.java
@@ -26,6 +26,12 @@
     return "com.google.gwt.emultest.EmulSuite";
   }

+  public void testCompare() {
+ assertTrue("Short.compare failed for 1 < 2", Short.compare((short) 1, (short) 2) < 0); + assertTrue("Short.compare failed for 2 > 1", Short.compare((short) 2, (short) 1) > 0);
+    assertEquals(0, Short.compare((short) 1, (short) 1));
+  }
+
   public void testConstants() {
     assertEquals(16, Short.SIZE);
     assertEquals((short) 0x7fff, Short.MAX_VALUE);

--
To view, visit https://gwt-review.googlesource.com/3180
To unsubscribe, visit https://gwt-review.googlesource.com/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: Ib33c93ff0fb3f7e4b93994a29d6e2a65898be246
Gerrit-PatchSet: 14
Gerrit-Project: gwt
Gerrit-Branch: master
Gerrit-Owner: Daniel Kurka <danku...@google.com>
Gerrit-Reviewer: Daniel Kurka <danku...@google.com>
Gerrit-Reviewer: Goktug Gokdogan <gok...@google.com>
Gerrit-Reviewer: John A. Tamplin <j...@jaet.org>
Gerrit-Reviewer: Leeroy Jenkins <jenk...@gwtproject.org>
Gerrit-Reviewer: Thomas Broyer <t.bro...@gmail.com>

--
http://groups.google.com/group/Google-Web-Toolkit-Contributors
--- You received this message because you are subscribed to the Google Groups "GWT Contributors" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to google-web-toolkit-contributors+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to