Added new tests for float/double ops and bit-shift instructions. development
authorJan Vrany <jan.vrany@fit.cvut.cz>
Tue, 25 Dec 2012 17:37:38 +0100
branchdevelopment
changeset 1918 13399b79b990
parent 1914 6d0f663767ee
child 1919 d2f931428d34
Added new tests for float/double ops and bit-shift instructions.
tests/libjava/src/stx/libjava/tests/lang/FloatAndDoubleTests.java
tests/libjava/src/stx/libjava/tests/vm/XSHX.java
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/libjava/src/stx/libjava/tests/lang/FloatAndDoubleTests.java	Tue Dec 25 17:37:38 2012 +0100
@@ -0,0 +1,17 @@
+package stx.libjava.tests.lang;
+
+import static org.junit.Assert.*;
+
+import org.junit.Test;
+
+public class FloatAndDoubleTests {
+
+	@Test
+	public void test() {
+		double f1 = Double.MAX_VALUE;		
+		String s = Double.toString(f1);
+		double f2 = Double.valueOf(s);
+		assertTrue(f1 == f2);
+	}
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/libjava/src/stx/libjava/tests/vm/XSHX.java	Tue Dec 25 17:37:38 2012 +0100
@@ -0,0 +1,50 @@
+package stx.libjava.tests.vm;
+
+import static org.junit.Assert.*;
+
+import org.junit.Test;
+
+/*
+ * Test for B/I/L signer/unsigner SHift Left/Right
+ */
+public class XSHX {
+
+	private final byte[] cafebabe = { (byte) 0xCA, (byte) 0xFE, (byte) 0xBA, (byte) 0xBE, (byte) 0xCA, (byte) 0xFE, (byte) 0xBA, (byte) 0xBE };
+	
+	@Test
+	public void testShiftingLong() {
+		byte[] buffer = new byte[8];		
+		long v = readLong(cafebabe);
+		
+		System.out.println("--->"+ v);
+		
+		writeLong(v, buffer);
+        
+        for (int i = 0; i < cafebabe.length; i++) {
+        	assertTrue(cafebabe[i] == buffer[i]);
+        }
+	}
+	
+	public final void writeLong(long v, byte[] writeBuffer) {
+		writeBuffer[0] = (byte)(v >>> 56);
+        writeBuffer[1] = (byte)(v >>> 48);
+        writeBuffer[2] = (byte)(v >>> 40);
+        writeBuffer[3] = (byte)(v >>> 32);
+        writeBuffer[4] = (byte)(v >>> 24);
+        writeBuffer[5] = (byte)(v >>> 16);
+        writeBuffer[6] = (byte)(v >>>  8);
+        writeBuffer[7] = (byte)(v >>>  0);
+	}
+	
+	public final long readLong(byte[] readBuffer) {        
+        return (((long)readBuffer[0] << 56) +
+                ((long)(readBuffer[1] & 255) << 48) +
+                ((long)(readBuffer[2] & 255) << 40) +
+                ((long)(readBuffer[3] & 255) << 32) +
+                ((long)(readBuffer[4] & 255) << 24) +
+                ((readBuffer[5] & 255) << 16) +
+                ((readBuffer[6] & 255) <<  8) +
+                ((readBuffer[7] & 255) <<  0));
+    }
+
+}