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.sget_boolean; 18 19 import dot.junit.DxTestCase; 20 import dot.junit.DxUtil; 21 import dot.junit.opcodes.sget_boolean.d.T_sget_boolean_1; 22 import dot.junit.opcodes.sget_boolean.d.T_sget_boolean_11; 23 import dot.junit.opcodes.sget_boolean.d.T_sget_boolean_12; 24 import dot.junit.opcodes.sget_boolean.d.T_sget_boolean_13; 25 import dot.junit.opcodes.sget_boolean.d.T_sget_boolean_5; 26 import dot.junit.opcodes.sget_boolean.d.T_sget_boolean_6; 27 import dot.junit.opcodes.sget_boolean.d.T_sget_boolean_7; 28 import dot.junit.opcodes.sget_boolean.d.T_sget_boolean_8; 29 import dot.junit.opcodes.sget_boolean.d.T_sget_boolean_9; 30 31 public class Test_sget_boolean extends DxTestCase { 32 33 /** 34 * @title get boolean from static field 35 */ testN1()36 public void testN1() { 37 T_sget_boolean_1 t = new T_sget_boolean_1(); 38 assertEquals(true, t.run()); 39 } 40 41 42 /** 43 * @title access protected field from subclass 44 */ testN3()45 public void testN3() { 46 //@uses dot.junit.opcodes.sget_boolean.d.T_sget_boolean_1 47 //@uses dot.junit.opcodes.sget_boolean.d.T_sget_boolean_11 48 T_sget_boolean_11 t = new T_sget_boolean_11(); 49 assertEquals(true, t.run()); 50 } 51 52 /** 53 * @constraint A12 54 * @title attempt to access non-static field 55 */ testE1()56 public void testE1() { 57 loadAndRun("dot.junit.opcodes.sget_boolean.d.T_sget_boolean_5", 58 IncompatibleClassChangeError.class); 59 } 60 61 /** 62 * @title initialization of referenced class throws exception 63 */ testE6()64 public void testE6() { 65 loadAndRun("dot.junit.opcodes.sget_boolean.d.T_sget_boolean_9", 66 ExceptionInInitializerError.class); 67 } 68 69 /** 70 * @constraint A12 71 * @title constant pool index 72 */ testVFE1()73 public void testVFE1() { 74 load("dot.junit.opcodes.sget_boolean.d.T_sget_boolean_4", VerifyError.class); 75 } 76 77 /** 78 * 79 * @constraint A23 80 * @title number of registers 81 */ testVFE2()82 public void testVFE2() { 83 load("dot.junit.opcodes.sget_boolean.d.T_sget_boolean_3", VerifyError.class); 84 } 85 86 /** 87 * 88 * @constraint B13 89 * @title read boolean from long field - only field with same name but 90 * different type exists 91 */ testVFE3()92 public void testVFE3() { 93 loadAndRun("dot.junit.opcodes.sget_boolean.d.T_sget_boolean_13", NoSuchFieldError.class); 94 } 95 96 /** 97 * @constraint n/a 98 * @title Attempt to read inaccessible field. 99 */ testVFE4()100 public void testVFE4() { 101 //@uses dot.junit.opcodes.sget_boolean.TestStubs 102 loadAndRun("dot.junit.opcodes.sget_boolean.d.T_sget_boolean_6", IllegalAccessError.class); 103 } 104 105 /** 106 * @constraint n/a 107 * @title Attempt to read field of undefined class. 108 */ testVFE5()109 public void testVFE5() { 110 loadAndRun("dot.junit.opcodes.sget_boolean.d.T_sget_boolean_7", NoClassDefFoundError.class); 111 } 112 113 /** 114 * @constraint n/a 115 * @title Attempt to read undefined field. 116 */ testVFE6()117 public void testVFE6() { 118 loadAndRun("dot.junit.opcodes.sget_boolean.d.T_sget_boolean_8", NoSuchFieldError.class); 119 } 120 121 /** 122 * @constraint n/a 123 * @title Attempt to read superclass' private field from subclass. 124 */ testVFE7()125 public void testVFE7() { 126 //@uses dot.junit.opcodes.sget_boolean.d.T_sget_boolean_1 127 loadAndRun("dot.junit.opcodes.sget_boolean.d.T_sget_boolean_12", IllegalAccessError.class); 128 } 129 130 /** 131 * @constraint B1 132 * @title sget_boolean shall not work for reference fields 133 */ testVFE8()134 public void testVFE8() { 135 load("dot.junit.opcodes.sget_boolean.d.T_sget_boolean_14", VerifyError.class); 136 } 137 138 /** 139 * 140 * @constraint B1 141 * @title sget_boolean shall not work for short fields 142 */ testVFE9()143 public void testVFE9() { 144 load("dot.junit.opcodes.sget_boolean.d.T_sget_boolean_15", VerifyError.class); 145 } 146 147 /** 148 * 149 * @constraint B1 150 * @title sget_boolean shall not work for int fields 151 */ testVFE10()152 public void testVFE10() { 153 load("dot.junit.opcodes.sget_boolean.d.T_sget_boolean_16", VerifyError.class); 154 } 155 156 /** 157 * 158 * @constraint B1 159 * @title sget_boolean shall not work for char fields 160 */ testVFE11()161 public void testVFE11() { 162 load("dot.junit.opcodes.sget_boolean.d.T_sget_boolean_17", VerifyError.class); 163 } 164 165 /** 166 * 167 * @constraint B1 168 * @title sget_boolean shall not work for byte fields 169 */ testVFE12()170 public void testVFE12() { 171 load("dot.junit.opcodes.sget_boolean.d.T_sget_boolean_18", VerifyError.class); 172 } 173 174 /** 175 * 176 * @constraint B1 177 * @title sget_boolean shall not work for double fields 178 */ testVFE13()179 public void testVFE13() { 180 load("dot.junit.opcodes.sget_boolean.d.T_sget_boolean_19", VerifyError.class); 181 } 182 183 /** 184 * 185 * @constraint B1 186 * @title sget_boolean shall not work for long fields 187 */ testVFE14()188 public void testVFE14() { 189 load("dot.junit.opcodes.sget_boolean.d.T_sget_boolean_20", VerifyError.class); 190 } 191 } 192