blob: f3a4f9edfce329a88e37a6112733f015f817621c [file] [log] [blame]
Tsu Chiang Chuang9a223d72011-04-27 17:19:46 -07001/*
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
17package dot.junit.opcodes.iput_char;
18
19import dot.junit.DxTestCase;
20import dot.junit.DxUtil;
21import dot.junit.opcodes.iput_char.d.T_iput_char_1;
22import dot.junit.opcodes.iput_char.d.T_iput_char_10;
23import dot.junit.opcodes.iput_char.d.T_iput_char_11;
24import dot.junit.opcodes.iput_char.d.T_iput_char_12;
25import dot.junit.opcodes.iput_char.d.T_iput_char_13;
26import dot.junit.opcodes.iput_char.d.T_iput_char_14;
27import dot.junit.opcodes.iput_char.d.T_iput_char_15;
28import dot.junit.opcodes.iput_char.d.T_iput_char_17;
29import dot.junit.opcodes.iput_char.d.T_iput_char_7;
30import dot.junit.opcodes.iput_char.d.T_iput_char_8;
31import dot.junit.opcodes.iput_char.d.T_iput_char_9;
32
33public class Test_iput_char extends DxTestCase {
34 /**
35 * @title put char into field
36 */
37 public void testN1() {
38 T_iput_char_1 t = new T_iput_char_1();
39 assertEquals(0, t.st_i1);
40 t.run();
41 assertEquals(77, t.st_i1);
42 }
43
44
45 /**
46 * @title modification of final field
47 */
48 public void testN2() {
49 T_iput_char_12 t = new T_iput_char_12();
50 assertEquals(0, t.st_i1);
51 t.run();
52 assertEquals(77, t.st_i1);
53 }
54
55 /**
56 * @title modification of protected field from subclass
57 */
58 public void testN4() {
59 //@uses dot.junit.opcodes.iput_char.d.T_iput_char_1
60 //@uses dot.junit.opcodes.iput_char.d.T_iput_char_14
61 T_iput_char_14 t = new T_iput_char_14();
62 assertEquals(0, t.getProtectedField());
63 t.run();
64 assertEquals(77, t.getProtectedField());
65 }
66
67 /**
68 * @title expected NullPointerException
69 */
70 public void testE2() {
71 T_iput_char_13 t = new T_iput_char_13();
72 try {
73 t.run();
74 fail("expected NullPointerException");
75 } catch (NullPointerException e) {
76 // expected
77 }
78 }
79
80
81 /**
82 * @constraint A11
83 * @title constant pool index
84 */
85 public void testVFE1() {
86 try {
87 Class.forName("dot.junit.opcodes.iput_char.d.T_iput_char_3");
88 fail("expected a verification exception");
89 } catch (Throwable t) {
90 DxUtil.checkVerifyException(t);
91 }
92 }
93
94 /**
95 *
96 * @constraint A23
97 * @title number of registers
98 */
99 public void testVFE2() {
100 try {
101 Class.forName("dot.junit.opcodes.iput_char.d.T_iput_char_4");
102 fail("expected a verification exception");
103 } catch (Throwable t) {
104 DxUtil.checkVerifyException(t);
105 }
106 }
107
108
109 /**
110 *
111 * @constraint B14
112 * @title put char into long field - only field with same name but
113 * different type exists
114 */
115 public void testVFE5() {
116 try {
117 new T_iput_char_17().run();
118 fail("expected NoSuchFieldError");
119 } catch (NoSuchFieldError t) {
120 }
121 }
122
123 /**
124 *
125 * @constraint B14
126 * @title put value '66000' into byte field
127 */
128 public void testVFE6() {
129 try {
130 Class.forName("dot.junit.opcodes.iput_char.d.T_iput_char_6");
131 fail("expected a verification exception");
132 } catch (Throwable t) {
133 DxUtil.checkVerifyException(t);
134 }
135 }
136
137 /**
138 *
139 * @constraint B14
140 * @title type of field doesn't match opcode - attempt to modify double
141 * field with single-width register
142 */
143 public void testVFE7() {
144 try {
145 Class.forName("dot.junit.opcodes.iput_char.d.T_iput_char_18");
146 fail("expected a verification exception");
147 } catch (Throwable t) {
148 DxUtil.checkVerifyException(t);
149 }
150 }
151
152 /**
153 *
154 * @constraint A11
155 * @title Attempt to set static field.
156 */
157 public void testVFE8() {
158 try {
159 new T_iput_char_7().run();
160 fail("expected IncompatibleClassChangeError");
161 } catch (IncompatibleClassChangeError t) {
162 }
163 }
164
165 /**
166 * @constraint B12
167 * @title Attempt to modify inaccessible protected field.
168 */
169 public void testVFE9() {
170 //@uses dot.junit.opcodes.iput_char.TestStubs
171 //@uses dot.junit.opcodes.iput_char.d.T_iput_char_8
172 try {
173 new T_iput_char_8().run();
174 fail("expected IllegalAccessError");
175 } catch (IllegalAccessError t) {
176 }
177 }
178
179 /**
180 * @constraint n/a
181 * @title Attempt to modify field of undefined class.
182 */
183 public void testVFE10() {
184 try {
185 new T_iput_char_9().run();
186 fail("expected NoClassDefFoundError");
187 } catch (NoClassDefFoundError t) {
188 }
189 }
190
191
192 /**
193 * @constraint n/a
194 * @title Attempt to modify undefined field.
195 */
196 public void testVFE11() {
197 try {
198 new T_iput_char_10().run();
199 fail("expected NoSuchFieldError");
200 } catch (NoSuchFieldError t) {
201 }
202 }
203
204
205
206 /**
207 * @constraint n/a
208 * @title Attempt to modify superclass' private field from subclass.
209 */
210 public void testVFE12() {
211 //@uses dot.junit.opcodes.iput_char.d.T_iput_char_1
212 //@uses dot.junit.opcodes.iput_char.d.T_iput_char_15
213 try {
214 new T_iput_char_15().run();
215 fail("expected IllegalAccessError");
216 } catch (IllegalAccessError t) {
217 }
218 }
219
220
221 /**
222 * @constraint B1
223 * @title iput-char shall not work for wide numbers
224 */
225 public void testVFE13() {
226 try {
227 Class.forName("dot.junit.opcodes.iput_char.d.T_iput_char_2");
228 fail("expected a verification exception");
229 } catch (Throwable t) {
230 DxUtil.checkVerifyException(t);
231 }
232 }
233
234 /**
235 *
236 * @constraint B1
237 * @title iput-char shall not work for reference fields
238 */
239 public void testVFE14() {
240 try {
241 Class.forName("dot.junit.opcodes.iput_char.d.T_iput_char_20");
242 fail("expected a verification exception");
243 } catch (Throwable t) {
244 DxUtil.checkVerifyException(t);
245 }
246 }
247
248 /**
249 *
250 * @constraint B1
251 * @title iput-char shall not work for short fields
252 */
253 public void testVFE15() {
254 try {
255 Class.forName("dot.junit.opcodes.iput_char.d.T_iput_char_21");
256 fail("expected a verification exception");
257 } catch (Throwable t) {
258 DxUtil.checkVerifyException(t);
259 }
260 }
261
262 /**
263 *
264 * @constraint B1
265 * @title iput-char shall not work for int fields
266 */
267 public void testVFE16() {
268 try {
269 Class.forName("dot.junit.opcodes.iput_char.d.T_iput_char_22");
270 fail("expected a verification exception");
271 } catch (Throwable t) {
272 DxUtil.checkVerifyException(t);
273 }
274 }
275
276 /**
277 *
278 * @constraint B1
279 * @title iput-char shall not work for byte fields
280 */
281 public void testVFE17() {
282 try {
283 Class.forName("dot.junit.opcodes.iput_char.d.T_iput_char_23");
284 fail("expected a verification exception");
285 } catch (Throwable t) {
286 DxUtil.checkVerifyException(t);
287 }
288 }
289
290 /**
291 *
292 * @constraint B1
293 * @title iput-char shall not work for boolean fields
294 */
295 public void testVFE18() {
296 try {
297 Class.forName("dot.junit.opcodes.iput_char.d.T_iput_char_24");
298 fail("expected a verification exception");
299 } catch (Throwable t) {
300 DxUtil.checkVerifyException(t);
301 }
302 }
303
304
305 /**
306 * @constraint B6
307 * @title instance fields may only be accessed on already initialized instances.
308 */
309 public void testVFE30() {
310 try {
311 Class.forName("dot.junit.opcodes.iput_char.d.T_iput_char_30");
312 fail("expected a verification exception");
313 } catch (Throwable t) {
314 DxUtil.checkVerifyException(t);
315 }
316 }
317
318 /**
319 * @constraint n/a
320 * @title Modification of final field in other class
321 */
322 public void testVFE19() {
323 //@uses dot.junit.opcodes.iput_char.TestStubs
324 //@uses dot.junit.opcodes.iput_char.d.T_iput_char_11
325 try {
326 new T_iput_char_11().run();
327 fail("expected IllegalAccessError");
328 } catch (IllegalAccessError t) {
329 }
330 }
331
332}
333