changeset 1723 | 3a1f262311cf |
parent 1722 | fd3a354d6e8f |
child 1724 | 50ad005d1597 |
1.1 --- a/rt/emul/compact/src/test/java/org/apidesign/bck2brwsr/tck/ByteArithmeticTest.java Sun Nov 09 10:36:08 2014 +0100 1.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 1.3 @@ -1,147 +0,0 @@ 1.4 -/** 1.5 - * Back 2 Browser Bytecode Translator 1.6 - * Copyright (C) 2012 Jaroslav Tulach <jaroslav.tulach@apidesign.org> 1.7 - * 1.8 - * This program is free software: you can redistribute it and/or modify 1.9 - * it under the terms of the GNU General Public License as published by 1.10 - * the Free Software Foundation, version 2 of the License. 1.11 - * 1.12 - * This program is distributed in the hope that it will be useful, 1.13 - * but WITHOUT ANY WARRANTY; without even the implied warranty of 1.14 - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 1.15 - * GNU General Public License for more details. 1.16 - * 1.17 - * You should have received a copy of the GNU General Public License 1.18 - * along with this program. Look for COPYING file in the top folder. 1.19 - * If not, see http://opensource.org/licenses/GPL-2.0. 1.20 - */ 1.21 -package org.apidesign.bck2brwsr.tck; 1.22 - 1.23 -import org.apidesign.bck2brwsr.core.JavaScriptBody; 1.24 -import org.apidesign.bck2brwsr.vmtest.Compare; 1.25 -import org.apidesign.bck2brwsr.vmtest.VMTest; 1.26 -import org.testng.annotations.Factory; 1.27 - 1.28 -/** 1.29 - * 1.30 - * @author Jaroslav Tulach <jtulach@netbeans.org> 1.31 - */ 1.32 -public class ByteArithmeticTest { 1.33 - 1.34 - private static byte add(byte x, byte y) { 1.35 - return (byte)(x + y); 1.36 - } 1.37 - 1.38 - private static byte sub(byte x, byte y) { 1.39 - return (byte)(x - y); 1.40 - } 1.41 - 1.42 - private static byte mul(byte x, byte y) { 1.43 - return (byte)(x * y); 1.44 - } 1.45 - 1.46 - private static byte div(byte x, byte y) { 1.47 - return (byte)(x / y); 1.48 - } 1.49 - 1.50 - private static byte mod(byte x, byte y) { 1.51 - return (byte)(x % y); 1.52 - } 1.53 - 1.54 - @Compare public byte conversion() { 1.55 - return (byte)123456; 1.56 - } 1.57 - 1.58 - @Compare public byte addOverflow() { 1.59 - return add(Byte.MAX_VALUE, (byte)1); 1.60 - } 1.61 - 1.62 - @Compare public byte subUnderflow() { 1.63 - return sub(Byte.MIN_VALUE, (byte)1); 1.64 - } 1.65 - 1.66 - @Compare public byte addMaxByteAndMaxByte() { 1.67 - return add(Byte.MAX_VALUE, Byte.MAX_VALUE); 1.68 - } 1.69 - 1.70 - @Compare public byte subMinByteAndMinByte() { 1.71 - return sub(Byte.MIN_VALUE, Byte.MIN_VALUE); 1.72 - } 1.73 - 1.74 - @Compare public byte multiplyMaxByte() { 1.75 - return mul(Byte.MAX_VALUE, (byte)2); 1.76 - } 1.77 - 1.78 - @Compare public byte multiplyMaxByteAndMaxByte() { 1.79 - return mul(Byte.MAX_VALUE, Byte.MAX_VALUE); 1.80 - } 1.81 - 1.82 - @Compare public byte multiplyMinByte() { 1.83 - return mul(Byte.MIN_VALUE, (byte)2); 1.84 - } 1.85 - 1.86 - @Compare public byte multiplyMinByteAndMinByte() { 1.87 - return mul(Byte.MIN_VALUE, Byte.MIN_VALUE); 1.88 - } 1.89 - 1.90 - @Compare public byte multiplyPrecision() { 1.91 - return mul((byte)17638, (byte)1103); 1.92 - } 1.93 - 1.94 - @Compare public byte division() { 1.95 - return div((byte)1, (byte)2); 1.96 - } 1.97 - 1.98 - @Compare public byte divisionReminder() { 1.99 - return mod((byte)1, (byte)2); 1.100 - } 1.101 - 1.102 - private static int readShort(byte[] byteCodes, int offset) { 1.103 - int signed = byteCodes[offset]; 1.104 - byte b0 = (byte)signed; 1.105 - return (b0 << 8) | (byteCodes[offset + 1] & 0xff); 1.106 - } 1.107 - 1.108 - private static int readShortArg(byte[] byteCodes, int offsetInstruction) { 1.109 - return readShort(byteCodes, offsetInstruction + 1); 1.110 - } 1.111 - 1.112 - @Compare public int readIntArgs255and156() { 1.113 - final byte[] arr = new byte[] { (byte)0, (byte)255, (byte)156 }; 1.114 - 1.115 - assert arr[1] == -1 : "First byte: " + arr[1]; 1.116 - assert arr[2] == -100 : "Second byte: " + arr[2]; 1.117 - final int ret = readShortArg(arr, 0); 1.118 - assert ret < 65000: "Value: " + ret; 1.119 - return ret; 1.120 - } 1.121 - 1.122 - @JavaScriptBody(args = { "arr" }, body = "arr[1] = 255; arr[2] = 156; return arr;") 1.123 - private static byte[] fill255and156(byte[] arr) { 1.124 - arr[1] = (byte)255; 1.125 - arr[2] = (byte)156; 1.126 - return arr; 1.127 - } 1.128 - 1.129 - @Compare public int readIntArgs255and156JSArray() { 1.130 - final byte[] arr = fill255and156(new byte[] { 0, 0, 0 }); 1.131 - 1.132 - final int ret = readShortArg(arr, 0); 1.133 - assert ret < 65000: "Value: " + ret; 1.134 - return ret; 1.135 - } 1.136 - 1.137 - @Compare public int readIntArgsMinus1andMinus100() { 1.138 - final byte[] arr = new byte[] { (byte)0, (byte)-1, (byte)-100 }; 1.139 - 1.140 - assert arr[1] == -1 : "First byte: " + arr[1]; 1.141 - assert arr[2] == -100 : "Second byte: " + arr[2]; 1.142 - 1.143 - return readShortArg(arr, 0); 1.144 - } 1.145 - 1.146 - @Factory 1.147 - public static Object[] create() { 1.148 - return VMTest.create(ByteArithmeticTest.class); 1.149 - } 1.150 -}