rt/vmtest/src/test/java/org/apidesign/bck2brwsr/tck/ByteArithmeticTest.java
changeset 864 8ece59d31fcf
parent 772 d382dacfd73f
     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() {