Add testcase for Long.reverseBytes(), in the process uncovering, fixing, and adding test for a sign-extension error in Integer.reverseBytes().

Review by: scottb


git-svn-id: https://google-web-toolkit.googlecode.com/svn/trunk@2272 8db76d5a-ed1c-0410-87a9-c151d255dfc7
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 ac945f5..e9481d2 100644
--- a/user/super/com/google/gwt/emul/java/lang/Integer.java
+++ b/user/super/com/google/gwt/emul/java/lang/Integer.java
@@ -127,7 +127,7 @@
 
   public static int reverseBytes(int i) {
     return ((i & 0xff) << 24) | ((i & 0xff00) << 8) | ((i & 0xff0000) >> 8)
-        | ((i & 0xff000000) >> 24);
+        | ((i & 0xff000000) >>> 24);
   }
 
   public static int rotateLeft(int i, int distance) {
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 3f34e83..711e087 100644
--- a/user/test/com/google/gwt/emultest/java/lang/IntegerTest.java
+++ b/user/test/com/google/gwt/emultest/java/lang/IntegerTest.java
@@ -193,6 +193,7 @@
     // two-complement bugs?
     assertEquals(0x84218421, Integer.reverseBytes(0x21842184));
     assertEquals(0x12481248, Integer.reverseBytes(0x48124812));
+    assertEquals(0x21436587, Integer.reverseBytes(0x87654321));
   }
 
   public void testRotateLeft() {
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 12b5f70..9b7aece 100644
--- a/user/test/com/google/gwt/emultest/java/lang/LongTest.java
+++ b/user/test/com/google/gwt/emultest/java/lang/LongTest.java
@@ -101,6 +101,11 @@
   }

 

   public void testReverseBytes() {

+    assertEquals(0, Long.reverseBytes(0));

+    assertEquals(-1, Long.reverseBytes(-1));

+    assertEquals(0x80L, Long.reverseBytes(Long.MIN_VALUE));

+    assertEquals(Long.MIN_VALUE, Long.reverseBytes(0x80L));

+    assertEquals(0xf0debc9a78563412L, Long.reverseBytes(0x123456789abcdef0L));

   }

 

   public void testRotateLeft() {