1.1 --- a/test/tools/javac/types/CastTest.java Wed May 11 13:10:57 2011 +0200 1.2 +++ b/test/tools/javac/types/CastTest.java Wed May 11 13:12:11 2011 +0200 1.3 @@ -42,12 +42,13 @@ 1.4 */ 1.5 public class CastTest extends TypeHarness { 1.6 1.7 - Type[] allTypes; 1.8 + Type[] types_no_boxing; 1.9 + Type[] types_boxing; 1.10 1.11 static final boolean T = true; 1.12 static final boolean F = false; 1.13 1.14 - boolean[][] cast_result = { 1.15 + boolean[][] cast_result_no_boxing = { 1.16 //byte, short, int, long, float, double, char, bool, C, +C, I, T, byte[], short[], int[], long[], float[], double[], char[], bool[], C[], +C[], I[], T[] 1.17 /*byte*/ { T , T , T , T , T , T , T , F , F, F , F, F, F , F , F , F , F , F , F , F , F , F , F , F }, 1.18 /*short*/ { T , T , T , T , T , T , T , F , F, F , F, F, F , F , F , F , F , F , F , F , F , F , F , F }, 1.19 @@ -74,6 +75,25 @@ 1.20 /*I[]*/ { F , F , F , F , F , F , F , F , F, F , F, T, F , F , F , F , F , F , F , F , T , F , T , T }, 1.21 /*T[]*/ { F , F , F , F , F , F , F , F , F, F , F, T, F , F , F , F , F , F , F , F , T , T , T , T }}; 1.22 1.23 + boolean[][] cast_result_boxing = { 1.24 + //byte, short, int, long, float, double, char, bool, Byte, Short, Integer, Long, Float, Double, Character, Boolean, Object 1.25 + /*byte*/ { T , T , T , T , T , T , T , F , T , F , F , F , F , F , F , F , T }, 1.26 + /*short*/ { T , T , T , T , T , T , T , F , F , T , F , F , F , F , F , F , T }, 1.27 + /*int*/ { T , T , T , T , T , T , T , F , F , F , T , F , F , F , F , F , T }, 1.28 + /*long*/ { T , T , T , T , T , T , T , F , F , F , F , T , F , F , F , F , T }, 1.29 + /*float*/ { T , T , T , T , T , T , T , F , F , F , F , F , T , F , F , F , T }, 1.30 + /*double*/ { T , T , T , T , T , T , T , F , F , F , F , F , F , T , F , F , T }, 1.31 + /*char*/ { T , T , T , T , T , T , T , F , F , F , F , F , F , F , T , F , T }, 1.32 + /*bool*/ { F , F , F , F , F , F , F , T , F , F , F , F , F , F , F , T , T }, 1.33 + /*Byte*/ { T , T , T , T , T , T , F , F , T , F , F , F , F , F , F , F , T }, 1.34 + /*Short*/ { F , T , T , T , T , T , F , F , F , T , F , F , F , F , F , F , T }, 1.35 + /*Integer*/ { F , F , T , T , T , T , F , F , F , F , T , F , F , F , F , F , T }, 1.36 + /*Long*/ { F , F , F , T , T , T , F , F , F , F , F , T , F , F , F , F , T }, 1.37 + /*Float*/ { F , F , F , F , T , T , F , F , F , F , F , F , T , F , F , F , T }, 1.38 + /*Double*/ { F , F , F , F , F , T , F , F , F , F , F , F , F , T , F , F , T }, 1.39 + /*Character*/ { F , F , T , T , T , T , T , F , F , F , F , F , F , F , T , F , T }, 1.40 + /*Boolean*/ { F , F , F , F , F , F , F , T , F , F , F , F , F , F , F , T , T }, 1.41 + /*Object*/ { T , T , T , T , T , T , T , T , T , T , T , T , T , T , T , T , T }}; 1.42 CastTest() { 1.43 Type[] primitiveTypes = { 1.44 predef.byteType, 1.45 @@ -85,6 +105,15 @@ 1.46 predef.charType, 1.47 predef.booleanType }; 1.48 1.49 + Type[] boxedTypes = new Type[primitiveTypes.length + 1]; 1.50 + for (int i = 0 ; i < primitiveTypes.length ; i++) { 1.51 + boxedTypes[i] = box(primitiveTypes[i]); 1.52 + } 1.53 + 1.54 + boxedTypes[primitiveTypes.length] = predef.objectType; 1.55 + 1.56 + types_boxing = join(Type.class, primitiveTypes, boxedTypes); 1.57 + 1.58 Type[] referenceTypes = { 1.59 fac.Class(), 1.60 fac.Class(FINAL), 1.61 @@ -97,17 +126,22 @@ 1.62 arrayTypes[idx++] = fac.Array(t); 1.63 } 1.64 1.65 - allTypes = join(Type.class, primitiveTypes, referenceTypes, arrayTypes); 1.66 + types_no_boxing = join(Type.class, primitiveTypes, referenceTypes, arrayTypes); 1.67 } 1.68 1.69 - void test() { 1.70 - for (int i = 0; i < allTypes.length ; i++) { 1.71 - for (int j = 0; j < allTypes.length ; j++) { 1.72 - assertCastable(allTypes[i], allTypes[j], cast_result[i][j]); 1.73 + void test(Type[] all_types, boolean[][] cast_result) { 1.74 + for (int i = 0; i < all_types.length ; i++) { 1.75 + for (int j = 0; j < all_types.length ; j++) { 1.76 + assertCastable(all_types[i], all_types[j], cast_result[i][j]); 1.77 } 1.78 } 1.79 } 1.80 1.81 + void runTests() { 1.82 + test(types_no_boxing, cast_result_no_boxing); 1.83 + test(types_boxing, cast_result_boxing); 1.84 + } 1.85 + 1.86 @SuppressWarnings("unchecked") 1.87 <T> T[] join(Class<T> type, T[]... args) { 1.88 int totalLength = 0; 1.89 @@ -124,6 +158,6 @@ 1.90 } 1.91 1.92 public static void main(String[] args) { 1.93 - new CastTest().test(); 1.94 + new CastTest().runTests(); 1.95 } 1.96 }