• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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.iget;
18 
19 import dot.junit.DxTestCase;
20 import dot.junit.DxUtil;
21 import dot.junit.opcodes.iget.d.T_iget_1;
22 import dot.junit.opcodes.iget.d.T_iget_11;
23 import dot.junit.opcodes.iget.d.T_iget_12;
24 import dot.junit.opcodes.iget.d.T_iget_13;
25 import dot.junit.opcodes.iget.d.T_iget_2;
26 import dot.junit.opcodes.iget.d.T_iget_21;
27 import dot.junit.opcodes.iget.d.T_iget_5;
28 import dot.junit.opcodes.iget.d.T_iget_6;
29 import dot.junit.opcodes.iget.d.T_iget_7;
30 import dot.junit.opcodes.iget.d.T_iget_8;
31 import dot.junit.opcodes.iget.d.T_iget_9;
32 
33 public class Test_iget extends DxTestCase {
34 
35     /**
36      * @title type - int
37      */
testN1()38     public void testN1() {
39         T_iget_1 t = new T_iget_1();
40         assertEquals(5, t.run());
41     }
42 
43     /**
44      * @title type - float
45      */
testN2()46     public void testN2() {
47         T_iget_2 t = new T_iget_2();
48         assertEquals(123f, t.run());
49     }
50 
51     /**
52      * @title access protected field from subclass
53      */
testN3()54     public void testN3() {
55         //@uses dot.junit.opcodes.iget.d.T_iget_1
56         //@uses dot.junit.opcodes.iget.d.T_iget_11
57         T_iget_11 t = new T_iget_11();
58         assertEquals(10, t.run());
59     }
60 
61     /**
62      * @title expected NullPointerException
63      */
testE2()64     public void testE2() {
65         T_iget_9 t = new T_iget_9();
66         try {
67             t.run();
68             fail("expected NullPointerException");
69         } catch (NullPointerException e) {
70             // expected
71         }
72     }
73 
74     /**
75      * @constraint A11
76      * @title constant pool index
77      */
testVFE1()78     public void testVFE1() {
79         try {
80             Class.forName("dot.junit.opcodes.iget.d.T_iget_4");
81             fail("expected a verification exception");
82         } catch (Throwable t) {
83             DxUtil.checkVerifyException(t);
84         }
85     }
86 
87     /**
88      *
89      * @constraint A23
90      * @title number of registers
91      */
testVFE2()92     public void testVFE2() {
93         try {
94             Class.forName("dot.junit.opcodes.iget.d.T_iget_3");
95             fail("expected a verification exception");
96         } catch (Throwable t) {
97             DxUtil.checkVerifyException(t);
98         }
99     }
100 
101     /**
102      * @constraint B13
103      * @title read integer from long field - only field with same name but
104      * different type exist
105      */
testVFE3()106     public void testVFE3() {
107         try {
108             new T_iget_13().run();
109             fail("expected a NoSuchFieldError exception");
110         } catch (NoSuchFieldError e) {
111             // expected
112         }
113     }
114 
115     /**
116      * @constraint n/a
117      * @title Attempt to read inaccessible private field.
118      */
testVFE4()119     public void testVFE4() {
120         //@uses dot.junit.opcodes.iget.d.T_iget_6
121         //@uses dot.junit.opcodes.iget.TestStubs
122         try {
123             new T_iget_6().run();
124             fail("expected an IllegalAccessError exception");
125         } catch (IllegalAccessError e) {
126             // expected
127         }
128     }
129 
130     /**
131      * @constraint n/a
132      * @title Attempt to read field of undefined class.
133      */
testVFE5()134     public void testVFE5() {
135         try {
136             new T_iget_7().run();
137             fail("expected a NoClassDefFoundError exception");
138         } catch (NoClassDefFoundError e) {
139             // expected
140         }
141     }
142 
143     /**
144      * @constraint n/a
145      * @title Attempt to read undefined field.
146      */
testVFE6()147     public void testVFE6() {
148         try {
149             new T_iget_8().run();
150             fail("expected a NoSuchFieldError exception");
151         } catch (NoSuchFieldError e) {
152             // expected
153         }
154     }
155 
156     /**
157      * @constraint n/a
158      * @title Attempt to read superclass' private field from subclass.
159      */
testVFE7()160     public void testVFE7() {
161         //@uses dot.junit.opcodes.iget.d.T_iget_12
162         //@uses dot.junit.opcodes.iget.d.T_iget_1
163         try {
164             new T_iget_12().run();
165             fail("expected an IllegalAccessError exception");
166         } catch (IllegalAccessError e) {
167             // expected
168         }
169     }
170 
171     /**
172      * @constraint B1
173      * @title iget shall not work for reference fields
174      */
testVFE8()175     public void testVFE8() {
176         try {
177             Class.forName("dot.junit.opcodes.iget.d.T_iget_14");
178             fail("expected a verification exception");
179         } catch (Throwable t) {
180             DxUtil.checkVerifyException(t);
181         }
182     }
183 
184     /**
185      *
186      * @constraint B1
187      * @title iget shall not work for short fields
188      */
testVFE9()189     public void testVFE9() {
190         try {
191             Class.forName("dot.junit.opcodes.iget.d.T_iget_15");
192             fail("expected a verification exception");
193         } catch (Throwable t) {
194             DxUtil.checkVerifyException(t);
195         }
196     }
197 
198     /**
199      *
200      * @constraint B1
201      * @title iget shall not work for boolean fields
202      */
testVFE10()203     public void testVFE10() {
204         try {
205             Class.forName("dot.junit.opcodes.iget.d.T_iget_16");
206             fail("expected a verification exception");
207         } catch (Throwable t) {
208             DxUtil.checkVerifyException(t);
209         }
210     }
211 
212     /**
213      *
214      * @constraint B1
215      * @title iget shall not work for char fields
216      */
testVFE11()217     public void testVFE11() {
218         try {
219             Class.forName("dot.junit.opcodes.iget.d.T_iget_17");
220             fail("expected a verification exception");
221         } catch (Throwable t) {
222             DxUtil.checkVerifyException(t);
223         }
224     }
225 
226     /**
227      *
228      * @constraint B1
229      * @title iget shall not work for byte fields
230      */
testVFE12()231     public void testVFE12() {
232         try {
233             Class.forName("dot.junit.opcodes.iget.d.T_iget_18");
234             fail("expected a verification exception");
235         } catch (Throwable t) {
236             DxUtil.checkVerifyException(t);
237         }
238     }
239 
240     /**
241      *
242      * @constraint B1
243      * @title iget shall not work for double fields
244      */
testVFE13()245     public void testVFE13() {
246         try {
247             Class.forName("dot.junit.opcodes.iget.d.T_iget_19");
248             fail("expected a verification exception");
249         } catch (Throwable t) {
250             DxUtil.checkVerifyException(t);
251         }
252     }
253 
254     /**
255      *
256      * @constraint B1
257      * @title iget shall not work for long fields
258      */
testVFE14()259     public void testVFE14() {
260         try {
261             Class.forName("dot.junit.opcodes.iget.d.T_iget_20");
262             fail("expected a verification exception");
263         } catch (Throwable t) {
264             DxUtil.checkVerifyException(t);
265         }
266     }
267 
268     /**
269      * @constraint B12
270      * @title Attempt to read protected field of unrelated class.
271      */
testVFE15()272     public void testVFE15() {
273         //@uses dot.junit.opcodes.iget.d.T_iget_21
274         //@uses dot.junit.opcodes.iget.TestStubs
275         try {
276             new T_iget_21().run();
277             fail("expected an IllegalAccessError exception");
278         } catch (IllegalAccessError e) {
279             // expected
280         }
281     }
282 
283     /**
284      * @constraint A11
285      * @title Attempt to read static field.
286      */
testVFE16()287     public void testVFE16() {
288         //@uses dot.junit.opcodes.iget.d.T_iget_5
289         //@uses dot.junit.opcodes.iget.TestStubs
290         try {
291             new T_iget_5().run();
292             fail("expected an IncompatibleClassChangeError exception");
293         } catch (IncompatibleClassChangeError e) {
294             // expected
295         }
296     }
297 
298     /**
299      * @constraint B6
300      * @title instance fields may only be accessed on already initialized instances.
301      */
testVFE30()302     public void testVFE30() {
303         try {
304             Class.forName("dot.junit.opcodes.iget.d.T_iget_30");
305             fail("expected a verification exception");
306         } catch (Throwable t) {
307             DxUtil.checkVerifyException(t);
308         }
309     }
310 }
311 
312