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.aput_short;
18 
19 import dot.junit.DxTestCase;
20 import dot.junit.DxUtil;
21 import dot.junit.opcodes.aput_short.d.T_aput_short_1;
22 import dot.junit.opcodes.aput_short.d.T_aput_short_8;
23 
24 public class Test_aput_short extends DxTestCase {
25     /**
26      * @title put short into array
27      */
testN1()28     public void testN1() {
29         T_aput_short_1 t = new T_aput_short_1();
30         short[] arr = new short[2];
31         t.run(arr, 1, (short) 10000);
32         assertEquals(10000, arr[1]);
33     }
34 
35     /**
36      * @title put short into array
37      */
testN2()38     public void testN2() {
39         T_aput_short_1 t = new T_aput_short_1();
40         short[] arr = new short[2];
41         t.run(arr, 0, (short) 10000);
42         assertEquals(10000, arr[0]);
43     }
44 
45     /**
46      * @title expected ArrayIndexOutOfBoundsException
47      */
testE1()48     public void testE1() {
49         loadAndRun("dot.junit.opcodes.aput_short.d.T_aput_short_1",
50                    ArrayIndexOutOfBoundsException.class, new short[2], 2, (short) 10000);
51     }
52 
53     /**
54      * @title expected NullPointerException
55      */
testE2()56     public void testE2() {
57         loadAndRun("dot.junit.opcodes.aput_short.d.T_aput_short_1", NullPointerException.class,
58                    null, 2, (short) 10000);
59     }
60 
61     /**
62      * @title expected ArrayIndexOutOfBoundsException (negative index)
63      */
testE3()64     public void testE3() {
65         loadAndRun("dot.junit.opcodes.aput_short.d.T_aput_short_1",
66                    ArrayIndexOutOfBoundsException.class, new short[2], -1, (short) 10000);
67     }
68 
69     /**
70      * @constraint B1
71      * @title types of arguments - array, double, int
72      */
testVFE1()73     public void testVFE1() {
74         load("dot.junit.opcodes.aput_short.d.T_aput_short_2", VerifyError.class);
75     }
76 
77     /**
78      * @constraint B1
79      * @title types of arguments - array, int, long
80      */
testVFE2()81     public void testVFE2() {
82         load("dot.junit.opcodes.aput_short.d.T_aput_short_3", VerifyError.class);
83     }
84 
85     /**
86      * @constraint B1
87      * @title types of arguments - object, int, int
88      */
testVFE3()89     public void testVFE3() {
90         load("dot.junit.opcodes.aput_short.d.T_aput_short_4", VerifyError.class);
91     }
92 
93     /**
94      * @constraint B1
95      * @title types of arguments - double[], int, int
96      */
testVFE4()97     public void testVFE4() {
98         load("dot.junit.opcodes.aput_short.d.T_aput_short_5", VerifyError.class);
99     }
100 
101     /**
102      * @constraint B1
103      * @title types of arguments - long[], int, int
104      */
testVFE5()105     public void testVFE5() {
106         load("dot.junit.opcodes.aput_short.d.T_aput_short_6", VerifyError.class);
107     }
108 
109     /**
110      * @constraint B1
111      * @title types of arguments - array, reference, int
112      */
testVFE6()113     public void testVFE6() {
114         load("dot.junit.opcodes.aput_short.d.T_aput_short_7", VerifyError.class);
115     }
116 
117     /**
118      * @constraint A23
119      * @title number of registers
120      */
testVFE7()121     public void testVFE7() {
122         load("dot.junit.opcodes.aput_short.d.T_aput_short_9", VerifyError.class);
123     }
124 
125     /**
126      * @constraint B1
127      * @title Type of index argument - float. The verifier checks that ints
128      * and floats are not used interchangeably.
129      */
testVFE9()130     public void testVFE9() {
131         load("dot.junit.opcodes.aput_short.d.T_aput_short_8", VerifyError.class);
132     }
133 
134 }
135