1.1 --- a/rt/vmtest/src/test/java/org/apidesign/bck2brwsr/tck/ByteArithmeticTest.java Tue Feb 26 16:54:16 2013 +0100
1.2 +++ b/rt/vmtest/src/test/java/org/apidesign/bck2brwsr/tck/ByteArithmeticTest.java Wed Mar 20 21:24:36 2013 +0100
1.3 @@ -17,6 +17,7 @@
1.4 */
1.5 package org.apidesign.bck2brwsr.tck;
1.6
1.7 +import org.apidesign.bck2brwsr.core.JavaScriptBody;
1.8 import org.apidesign.bck2brwsr.vmtest.Compare;
1.9 import org.apidesign.bck2brwsr.vmtest.VMTest;
1.10 import org.testng.annotations.Factory;
1.11 @@ -94,6 +95,50 @@
1.12 @Compare public byte divisionReminder() {
1.13 return mod((byte)1, (byte)2);
1.14 }
1.15 +
1.16 + private static int readShort(byte[] byteCodes, int offset) {
1.17 + int signed = byteCodes[offset];
1.18 + byte b0 = (byte)signed;
1.19 + return (b0 << 8) | (byteCodes[offset + 1] & 0xff);
1.20 + }
1.21 +
1.22 + private static int readShortArg(byte[] byteCodes, int offsetInstruction) {
1.23 + return readShort(byteCodes, offsetInstruction + 1);
1.24 + }
1.25 +
1.26 + @Compare public int readIntArgs255and156() {
1.27 + final byte[] arr = new byte[] { (byte)0, (byte)255, (byte)156 };
1.28 +
1.29 + assert arr[1] == -1 : "First byte: " + arr[1];
1.30 + assert arr[2] == -100 : "Second byte: " + arr[2];
1.31 + final int ret = readShortArg(arr, 0);
1.32 + assert ret < 65000: "Value: " + ret;
1.33 + return ret;
1.34 + }
1.35 +
1.36 + @JavaScriptBody(args = { "arr" }, body = "arr[1] = 255; arr[2] = 156; return arr;")
1.37 + private static byte[] fill255and156(byte[] arr) {
1.38 + arr[1] = (byte)255;
1.39 + arr[2] = (byte)156;
1.40 + return arr;
1.41 + }
1.42 +
1.43 + @Compare public int readIntArgs255and156JSArray() {
1.44 + final byte[] arr = fill255and156(new byte[] { 0, 0, 0 });
1.45 +
1.46 + final int ret = readShortArg(arr, 0);
1.47 + assert ret < 65000: "Value: " + ret;
1.48 + return ret;
1.49 + }
1.50 +
1.51 + @Compare public int readIntArgsMinus1andMinus100() {
1.52 + final byte[] arr = new byte[] { (byte)0, (byte)-1, (byte)-100 };
1.53 +
1.54 + assert arr[1] == -1 : "First byte: " + arr[1];
1.55 + assert arr[2] == -100 : "Second byte: " + arr[2];
1.56 +
1.57 + return readShortArg(arr, 0);
1.58 + }
1.59
1.60 @Factory
1.61 public static Object[] create() {