• 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.sget_object;
18 
19 import dot.junit.DxTestCase;
20 import dot.junit.DxUtil;
21 import dot.junit.opcodes.sget_object.d.T_sget_object_1;
22 import dot.junit.opcodes.sget_object.d.T_sget_object_11;
23 import dot.junit.opcodes.sget_object.d.T_sget_object_12;
24 import dot.junit.opcodes.sget_object.d.T_sget_object_13;
25 import dot.junit.opcodes.sget_object.d.T_sget_object_21;
26 import dot.junit.opcodes.sget_object.d.T_sget_object_5;
27 import dot.junit.opcodes.sget_object.d.T_sget_object_6;
28 import dot.junit.opcodes.sget_object.d.T_sget_object_7;
29 import dot.junit.opcodes.sget_object.d.T_sget_object_8;
30 import dot.junit.opcodes.sget_object.d.T_sget_object_9;
31 
32 public class Test_sget_object extends DxTestCase {
33 
34     /**
35      * @title get object from static field
36      */
testN1()37     public void testN1() {
38         T_sget_object_1 t = new T_sget_object_1();
39         assertEquals(null, t.run());
40     }
41 
42 
43     /**
44      * @title access protected field from subclass
45      */
testN3()46     public void testN3() {
47         //@uses dot.junit.opcodes.sget_object.d.T_sget_object_1
48         //@uses dot.junit.opcodes.sget_object.d.T_sget_object_11
49         T_sget_object_11 t = new T_sget_object_11();
50         assertEquals(null, t.run());
51     }
52 
53     /**
54      * @constraint A12
55      * @title attempt to access non-static field
56      */
testE1()57     public void testE1() {
58 
59         T_sget_object_5 t = new T_sget_object_5();
60         try {
61             t.run();
62             fail("expected IncompatibleClassChangeError");
63         } catch (IncompatibleClassChangeError e) {
64             // expected
65         }
66     }
67 
68     /**
69      * @title initialization of referenced class throws exception
70      */
testE6()71     public void testE6() {
72         T_sget_object_9 t = new T_sget_object_9();
73         try {
74             t.run();
75             fail("expected Error");
76         } catch (Error e) {
77             // expected
78         }
79     }
80 
81 
82 
83     /**
84      * @constraint A12
85      * @title constant pool index
86      */
testVFE1()87     public void testVFE1() {
88         try {
89             Class.forName("dot.junit.opcodes.sget_object.d.T_sget_object_4");
90             fail("expected a verification exception");
91         } catch (Throwable t) {
92             DxUtil.checkVerifyException(t);
93         }
94     }
95 
96     /**
97      *
98      * @constraint A23
99      * @title number of registers
100      */
testVFE2()101     public void testVFE2() {
102         try {
103             Class.forName("dot.junit.opcodes.sget_object.d.T_sget_object_3");
104             fail("expected a verification exception");
105         } catch (Throwable t) {
106             DxUtil.checkVerifyException(t);
107         }
108     }
109 
110     /**
111      *
112      * @constraint B13
113      * @title read object from long field - only field with same name but
114      * different type exists
115      */
testVFE3()116     public void testVFE3() {
117         try {
118             new T_sget_object_13().run();
119             fail("expected NoSuchFieldError");
120         } catch (NoSuchFieldError t) {
121         }
122     }
123 
124     /**
125      * @constraint n/a
126      * @title Attempt to read inaccessible field.
127      */
testVFE4()128     public void testVFE4() {
129         //@uses dot.junit.opcodes.sget_object.d.T_sget_object_6
130         //@uses dot.junit.opcodes.sget_object.TestStubs
131         try {
132             new T_sget_object_6().run();
133             fail("expected IllegalAccessError");
134         } catch (IllegalAccessError t) {
135         }
136     }
137 
138     /**
139      * @constraint n/a
140      * @title Attempt to read field of undefined class.
141      */
testVFE5()142     public void testVFE5() {
143         try {
144             new T_sget_object_7().run();
145             fail("expected NoClassDefFoundError");
146         } catch (NoClassDefFoundError t) {
147         }
148     }
149 
150     /**
151      * @constraint n/a
152      * @title Attempt to read undefined field.
153      */
testVFE6()154     public void testVFE6() {
155         try {
156             new T_sget_object_8().run();
157             fail("expected NoSuchFieldError");
158         } catch (NoSuchFieldError t) {
159         }
160     }
161 
162     /**
163      * @constraint n/a
164      * @title Attempt to read superclass' private field from subclass.
165      */
testVFE7()166     public void testVFE7() {
167         //@uses dot.junit.opcodes.sget_object.d.T_sget_object_12
168         //@uses dot.junit.opcodes.sget_object.d.T_sget_object_1
169         try {
170             new T_sget_object_12().run();
171             fail("expected IllegalAccessError");
172         } catch (IllegalAccessError t) {
173         }
174     }
175 
176     /**
177      * @constraint B1
178      * @title sget_object shall not work for short fields
179      */
testVFE8()180     public void testVFE8() {
181         try {
182             Class.forName("dot.junit.opcodes.sget_object.d.T_sget_object_14");
183             fail("expected a verification exception");
184         } catch (Throwable t) {
185             DxUtil.checkVerifyException(t);
186         }
187     }
188 
189     /**
190      *
191      * @constraint B1
192      * @title sget_object shall not work for char fields
193      */
testVFE9()194     public void testVFE9() {
195         try {
196             Class.forName("dot.junit.opcodes.sget_object.d.T_sget_object_15");
197             fail("expected a verification exception");
198         } catch (Throwable t) {
199             DxUtil.checkVerifyException(t);
200         }
201     }
202 
203     /**
204      *
205      * @constraint B1
206      * @title sget_object shall not work for int fields
207      */
testVFE10()208     public void testVFE10() {
209         try {
210             Class.forName("dot.junit.opcodes.sget_object.d.T_sget_object_16");
211             fail("expected a verification exception");
212         } catch (Throwable t) {
213             DxUtil.checkVerifyException(t);
214         }
215     }
216 
217     /**
218      *
219      * @constraint B1
220      * @title sget_object shall not work for byte fields
221      */
testVFE11()222     public void testVFE11() {
223         try {
224             Class.forName("dot.junit.opcodes.sget_object.d.T_sget_object_17");
225             fail("expected a verification exception");
226         } catch (Throwable t) {
227             DxUtil.checkVerifyException(t);
228         }
229     }
230 
231     /**
232      *
233      * @constraint B1
234      * @title sget_object shall not work for boolean fields
235      */
testVFE12()236     public void testVFE12() {
237         try {
238             Class.forName("dot.junit.opcodes.sget_object.d.T_sget_object_18");
239             fail("expected a verification exception");
240         } catch (Throwable t) {
241             DxUtil.checkVerifyException(t);
242         }
243     }
244 
245     /**
246      *
247      * @constraint B1
248      * @title sget_object shall not work for double fields
249      */
testVFE13()250     public void testVFE13() {
251         try {
252             Class.forName("dot.junit.opcodes.sget_object.d.T_sget_object_19");
253             fail("expected a verification exception");
254         } catch (Throwable t) {
255             DxUtil.checkVerifyException(t);
256         }
257     }
258 
259     /**
260      *
261      * @constraint B1
262      * @title sget_object shall not work for long fields
263      */
testVFE14()264     public void testVFE14() {
265         try {
266             Class.forName("dot.junit.opcodes.sget_object.d.T_sget_object_20");
267             fail("expected a verification exception");
268         } catch (Throwable t) {
269             DxUtil.checkVerifyException(t);
270         }
271     }
272 
273     /**
274      *
275      * @constraint B13
276      * @title only field of different type exists)
277      */
testVFE15()278     public void testVFE15() {
279         try {
280             new T_sget_object_21().run();
281             fail("expected NoSuchFieldError");
282         } catch (NoSuchFieldError t) {
283         }
284     }
285 }
286