jaroslav@477: /** jaroslav@477: * Back 2 Browser Bytecode Translator jaroslav@477: * Copyright (C) 2012 Jaroslav Tulach jaroslav@477: * jaroslav@477: * This program is free software: you can redistribute it and/or modify jaroslav@477: * it under the terms of the GNU General Public License as published by jaroslav@477: * the Free Software Foundation, version 2 of the License. jaroslav@477: * jaroslav@477: * This program is distributed in the hope that it will be useful, jaroslav@477: * but WITHOUT ANY WARRANTY; without even the implied warranty of jaroslav@477: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the jaroslav@477: * GNU General Public License for more details. jaroslav@477: * jaroslav@477: * You should have received a copy of the GNU General Public License jaroslav@477: * along with this program. Look for COPYING file in the top folder. jaroslav@477: * If not, see http://opensource.org/licenses/GPL-2.0. jaroslav@477: */ jaroslav@477: package org.apidesign.bck2brwsr.tck; jaroslav@477: jaroslav@477: import java.lang.reflect.Array; jaroslav@477: import org.apidesign.bck2brwsr.vmtest.Compare; jaroslav@477: import org.apidesign.bck2brwsr.vmtest.VMTest; jaroslav@477: import org.testng.annotations.Factory; jaroslav@477: jaroslav@477: /** jaroslav@477: * jaroslav@477: * @author Jaroslav Tulach jaroslav@477: */ jaroslav@477: public class ReflectionArrayTest { jaroslav@477: @Compare public int lengthOfStringArray() { jaroslav@477: String[] arr = (String[]) Array.newInstance(String.class, 10); jaroslav@477: return arr.length; jaroslav@477: } jaroslav@482: jaroslav@482: @Compare public int reflectiveLengthOfStringArray() { jaroslav@482: Object arr = Array.newInstance(String.class, 10); jaroslav@482: return Array.getLength(arr); jaroslav@482: } jaroslav@482: jaroslav@482: @Compare public int reflectiveLengthOneNonArray() { jaroslav@482: Object arr = "non-array"; jaroslav@482: return Array.getLength(arr); jaroslav@482: } jaroslav@477: jaroslav@477: @Compare public String compTypeOfStringArray() { jaroslav@477: String[] arr = (String[]) Array.newInstance(String.class, 10); jaroslav@477: return arr.getClass().getComponentType().getName(); jaroslav@477: } jaroslav@477: jaroslav@477: @Compare public Object negativeArrayExcp() { jaroslav@477: return Array.newInstance(String.class, -5); jaroslav@477: } jaroslav@477: jaroslav@477: @Compare public int lengthOfIntArray() { jaroslav@477: int[] arr = (int[]) Array.newInstance(Integer.TYPE, 10); jaroslav@477: return arr.length; jaroslav@477: } jaroslav@477: jaroslav@482: @Compare public int reflectiveLengthOfIntArray() { jaroslav@482: Object arr = Array.newInstance(Integer.TYPE, 10); jaroslav@482: return Array.getLength(arr); jaroslav@482: } jaroslav@482: jaroslav@477: @Compare public String compTypeOfIntArray() { jaroslav@477: int[] arr = (int[]) Array.newInstance(int.class, 10); jaroslav@477: return arr.getClass().getComponentType().getName(); jaroslav@477: } jaroslav@477: jaroslav@477: @Compare public Object intNegativeArrayExcp() { jaroslav@477: return Array.newInstance(int.class, -5); jaroslav@477: } jaroslav@482: jaroslav@482: @Compare public Integer verifyAutobox() { jaroslav@482: int[] arr = (int[]) Array.newInstance(int.class, 5); jaroslav@482: return (Integer) Array.get(arr, 0); jaroslav@482: } jaroslav@482: @Compare public int verifyInt() { jaroslav@482: int[] arr = (int[]) Array.newInstance(int.class, 5); jaroslav@482: return Array.getInt(arr, 0); jaroslav@482: } jaroslav@482: @Compare public long verifyConvertToLong() { jaroslav@482: int[] arr = (int[]) Array.newInstance(int.class, 5); jaroslav@482: return Array.getLong(arr, 0); jaroslav@482: } jaroslav@482: jaroslav@482: @Compare public Object verifySetIntToObject() { jaroslav@482: Object[] arr = (Object[]) Array.newInstance(Object.class, 5); jaroslav@482: Array.setInt(arr, 0, 10); jaroslav@482: return Array.get(arr, 0); jaroslav@482: } jaroslav@482: @Compare public long verifySetShort() { jaroslav@482: int[] arr = (int[]) Array.newInstance(int.class, 5); jaroslav@482: Array.setShort(arr, 0, (short)10); jaroslav@482: return Array.getLong(arr, 0); jaroslav@482: } jaroslav@482: @Compare public long verifyCantSetLong() { jaroslav@482: int[] arr = (int[]) Array.newInstance(int.class, 5); jaroslav@482: Array.setLong(arr, 0, 10); jaroslav@482: return Array.getLong(arr, 0); jaroslav@482: } jaroslav@484: @Compare public float verifyLongToFloat() { jaroslav@484: Object arr = Array.newInstance(float.class, 5); jaroslav@484: Array.setLong(arr, 0, 10); jaroslav@484: return Array.getFloat(arr, 0); jaroslav@484: } jaroslav@482: jaroslav@482: @Compare public double verifyConvertToDouble() { jaroslav@482: int[] arr = (int[]) Array.newInstance(int.class, 5); jaroslav@482: return Array.getDouble(arr, 0); jaroslav@482: } jaroslav@477: jaroslav@480: @Compare public int multiIntArray() { jaroslav@480: int[][][] arr = (int[][][]) Array.newInstance(int.class, 3, 3, 3); jaroslav@480: return arr[0][1][2] + 5 + arr[2][2][0]; jaroslav@480: } jaroslav@480: jaroslav@480: @Compare public String multiIntArrayCompType() { jaroslav@480: return Array.newInstance(int.class, 3, 3, 3).getClass().getName(); jaroslav@480: } jaroslav@480: jaroslav@477: jaroslav@477: @Factory jaroslav@477: public static Object[] create() { jaroslav@477: return VMTest.create(ReflectionArrayTest.class); jaroslav@477: } jaroslav@477: }