1 /* 2 * Copyright (C) 2008 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package dot.junit.opcodes.new_array; 18 19 import dot.junit.DxTestCase; 20 import dot.junit.DxUtil; 21 import dot.junit.opcodes.new_array.d.T_new_array_1; 22 import dot.junit.opcodes.new_array.d.T_new_array_10; 23 import dot.junit.opcodes.new_array.d.T_new_array_11; 24 import dot.junit.opcodes.new_array.d.T_new_array_2; 25 import dot.junit.opcodes.new_array.d.T_new_array_3; 26 27 public class Test_new_array extends DxTestCase { 28 29 /** 30 * @title Array of ints 31 */ testN1()32 public void testN1() { 33 T_new_array_1 t = new T_new_array_1(); 34 int[] r = t.run(10); 35 int l = r.length; 36 assertEquals(10, l); 37 38 // check default initialization 39 for (int i = 0; i < l; i++) { 40 assertEquals(0, r[i]); 41 } 42 43 } 44 45 /** 46 * @title Array of booleans 47 */ testN2()48 public void testN2() { 49 T_new_array_2 t = new T_new_array_2(); 50 boolean[] r = t.run(10); 51 int l = r.length; 52 assertEquals(10, l); 53 54 // check default initialization 55 for (int i = 0; i < l; i++) { 56 assertFalse(r[i]); 57 } 58 } 59 60 /** 61 * @title Array of Objects 62 */ testN3()63 public void testN3() { 64 T_new_array_3 t = new T_new_array_3(); 65 Object[] r = t.run(10); 66 int l = r.length; 67 assertEquals(10, l); 68 69 // check default initialization 70 for (int i = 0; i < l; i++) { 71 assertNull(r[i]); 72 } 73 } 74 75 /** 76 * @title Array size = 0 77 */ testB1()78 public void testB1() { 79 T_new_array_1 t = new T_new_array_1(); 80 int[] r = t.run(0); 81 assertNotNull(r); 82 assertEquals(0, r.length); 83 } 84 85 /** 86 * @title expected NegativeArraySizeException 87 */ testE1()88 public void testE1() { 89 loadAndRun("dot.junit.opcodes.new_array.d.T_new_array_2", NegativeArraySizeException.class, 90 -1); 91 } 92 93 94 /** 95 * @constraint B1 96 * @title number of registers 97 */ testVFE1()98 public void testVFE1() { 99 load("dot.junit.opcodes.new_array.d.T_new_array_4", VerifyError.class); 100 } 101 102 /** 103 * 104 * @constraint B1 105 * @title size argument - long 106 */ testVFE2()107 public void testVFE2() { 108 load("dot.junit.opcodes.new_array.d.T_new_array_5", VerifyError.class); 109 } 110 111 /** 112 * 113 * @constraint B1 114 * @title size argument - reference 115 */ testVFE3()116 public void testVFE3() { 117 load("dot.junit.opcodes.new_array.d.T_new_array_9", VerifyError.class); 118 } 119 120 /** 121 * 122 * @constraint A19 123 * @title constant pool index 124 */ testVFE4()125 public void testVFE4() { 126 load("dot.junit.opcodes.new_array.d.T_new_array_6", VerifyError.class); 127 } 128 129 /** 130 * 131 * @constraint A22 132 * @title attempt to create object 133 */ testVFE5()134 public void testVFE5() { 135 load("dot.junit.opcodes.new_array.d.T_new_array_7", VerifyError.class); 136 } 137 138 /** 139 * 140 * @constraint A20 141 * @title array of more than 255 dimensions 142 */ testVFE6()143 public void testVFE6() { 144 load("dot.junit.opcodes.new_array.d.T_new_array_8", ClassNotFoundException.class); 145 } 146 147 /** 148 * @constraint n/a 149 * @title Attempt to instantiate array of non-existent class. 150 */ testVFE7()151 public void testVFE7() { 152 loadAndRun("dot.junit.opcodes.new_array.d.T_new_array_11", NoClassDefFoundError.class); 153 } 154 155 /** 156 * @constraint n/a 157 * @title Attempt to instantiate array of inaccessible class. 158 */ testVFE8()159 public void testVFE8() { 160 //@uses dot.junit.opcodes.new_array.TestStubs 161 loadAndRun("dot.junit.opcodes.new_array.d.T_new_array_10", IllegalAccessError.class); 162 } 163 164 } 165