• 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.rsub_int;
18 
19 import dot.junit.DxTestCase;
20 import dot.junit.DxUtil;
21 import dot.junit.opcodes.rsub_int.d.T_rsub_int_1;
22 import dot.junit.opcodes.rsub_int.d.T_rsub_int_2;
23 import dot.junit.opcodes.rsub_int.d.T_rsub_int_3;
24 import dot.junit.opcodes.rsub_int.d.T_rsub_int_4;
25 import dot.junit.opcodes.rsub_int.d.T_rsub_int_5;
26 import dot.junit.opcodes.rsub_int.d.T_rsub_int_6;
27 import dot.junit.opcodes.rsub_int.d.T_rsub_int_7;
28 import dot.junit.opcodes.rsub_int.d.T_rsub_int_12;
29 
30 public class Test_rsub_int extends DxTestCase {
31 
32     /**
33      * @title normal test - check different values
34      */
testN1()35     public void testN1() {
36         T_rsub_int_1 t = new T_rsub_int_1();
37         assertEquals("Subtest_1 is failed", -4, t.run(8));
38         assertEquals("Subtest_2 is failed",45, t.run1(15));
39         assertEquals("Subtest_3 is failed",0, t.run2(20));
40         assertEquals("Subtest_4 is failed",-35, t.run3(10));
41         assertEquals("Subtest_5 is failed",-20, t.run4(-50));
42         assertEquals("Subtest_6 is failed",20, t.run5(-70));
43     }
44 
45     /**
46      * @title normal test - check different values
47      */
testN2()48     public void testN2() {
49         T_rsub_int_2 t = new T_rsub_int_2();
50         assertEquals("Subtest_1 is failed",255, t.run(0));
51         assertEquals("Subtest_2 is failed",-32768, t.run1(0));
52         assertEquals("Subtest_3 is failed",-15, t.run2(15));
53         assertEquals("Subtest_4 is failed",123, t.run2(-123));
54     }
55 
56     /**
57      * @title
58      * 1: a = Integer.MAX_VALUE, b = 0, b-a = -Integer.MAX_VALUE
59      * 2: a = Short.MAX_VALUE, b = 0, b-a = -Short.MAX_VALUE
60      */
testB1()61     public void testB1() {
62         T_rsub_int_3 t = new T_rsub_int_3();
63         assertEquals(-Integer.MAX_VALUE, t.run(Integer.MAX_VALUE));
64         assertEquals(-Short.MAX_VALUE, t.run(Short.MAX_VALUE));
65     }
66 
67     /**
68      * @title
69      * 1: a = Integer.MIN_VALUE, b = 0, b-a = Integer.MIN_VALUE
70      * 2: a = Short.MIN_VALUE, b = 0, b-a = 32768
71      */
testB2()72     public void testB2() {
73         T_rsub_int_3 t = new T_rsub_int_3();
74         assertEquals(Integer.MIN_VALUE, t.run(Integer.MIN_VALUE));
75         assertEquals(32768, t.run(Short.MIN_VALUE));
76     }
77 
78     /**
79      * @title (a = 0, b = 0, b-a = 0)
80      */
testB3()81     public void testB3() {
82         T_rsub_int_3 t = new T_rsub_int_3();
83         assertEquals(0, t.run(0));
84     }
85 
86     /**
87      * @title
88      * 1: a = 0, b = Short.MAX_VALUE, b-a = Short.MAX_VALUE
89      * 2: a = 1, b = Short.MAX_VALUE, b-a = 32766
90      * 3: a = -1, b = Short.MAX_VALUE, b-a = 32768
91      */
testB4()92     public void testB4() {
93         T_rsub_int_4 t = new T_rsub_int_4();
94         assertEquals(Short.MAX_VALUE, t.run(0));
95         assertEquals(32766, t.run(1));
96         assertEquals(32768, t.run(-1));
97     }
98 
99     /**
100      * @title
101      * 1: a = Integer.MIN_VALUE, b = Short.MAX_VALUE, b-a = -2147450881
102      * 2: a = Integer.MAX_VALUE, b = Short.MAX_VALUE, b-a = -2147450880
103      * 3: a = Short.MIN_VALUE, b = Short.MAX_VALUE, b-a = 65535
104      */
testB5()105     public void testB5() {
106         T_rsub_int_4 t = new T_rsub_int_4();
107         assertEquals(-2147450881, t.run(Integer.MIN_VALUE));
108         assertEquals(-2147450880, t.run(Integer.MAX_VALUE));
109         assertEquals(65535, t.run(Short.MIN_VALUE));
110     }
111 
112     /**
113      * @title
114      * 1: a = 0, b = Short.MIN_VALUE, b-a = Short.MIN_VALUE
115      * 2: a = 1, b = Short.MIN_VALUE, b-a = -32769
116      * 3: a = -1, b = Short.MIN_VALUE, b-a = -32767
117      */
testB6()118     public void testB6() {
119         T_rsub_int_5 t = new T_rsub_int_5();
120         assertEquals(Short.MIN_VALUE, t.run(0));
121         assertEquals(-32769, t.run(1));
122         assertEquals(-32767, t.run(-1));
123     }
124 
125     /**
126      * @title
127      * 1: a = Integer.MAX_VALUE, b = Short.MIN_VALUE, b-a = 2147450881
128      * 2: a = Integer.MIN_VALUE, b = Short.MIN_VALUE, b-a = 2147450880
129      * 3: a = Short.MAX_VALUE, b = Short.MIN_VALUE, b-a = -65535
130      */
testB7()131     public void testB7() {
132         T_rsub_int_5 t = new T_rsub_int_5();
133         assertEquals(2147450881, t.run(Integer.MAX_VALUE));
134         assertEquals(2147450880, t.run(Integer.MIN_VALUE));
135         assertEquals(-65535, t.run(Short.MAX_VALUE));
136     }
137 
138     /**
139      * @title
140      * 1: a = Integer.MIN_VALUE, b = -1, b-a = Integer.MAX_VALUE
141      * 2: a = Short.MIN_VALUE, b = -1, b-a = Short.MAX_VALUE
142      */
testB8()143     public void testB8() {
144         T_rsub_int_6 t = new T_rsub_int_6();
145         assertEquals(Integer.MAX_VALUE, t.run(Integer.MIN_VALUE));
146         assertEquals(Short.MAX_VALUE, t.run(Short.MIN_VALUE));
147     }
148 
149     /**
150      * @title
151      * 1: a = Integer.MAX_VALUE, b = -1, b-a = Integer.MIN_VALUE
152      * 2: a = Short.MAX_VALUE, b = -1, b-a = -32768
153      */
testB9()154     public void testB9() {
155         T_rsub_int_6 t = new T_rsub_int_6();
156         assertEquals(Integer.MIN_VALUE, t.run(Integer.MAX_VALUE));
157         assertEquals(-32768, t.run(Short.MAX_VALUE));
158     }
159 
160     /**
161      * @title
162      * 1: a = Integer.MIN_VALUE, b = 1, b-a = -Integer.MAX_VALUE
163      * 2: a = Integer.MAX_VALUE, b = 1, b-a = -2147483646
164      */
testB10()165     public void testB10() {
166         T_rsub_int_7 t = new T_rsub_int_7();
167         assertEquals(-Integer.MAX_VALUE, t.run(Integer.MIN_VALUE));
168         assertEquals(-2147483646, t.run(Integer.MAX_VALUE));
169     }
170 
171     /**
172      * @title
173      * 1: a = Short.MIN_VALUE, b = 1, b-a = 32769
174      * 2: a = Short.MAX_VALUE, b = 1, b-a = -32766
175      */
testB11()176     public void testB11() {
177         T_rsub_int_7 t = new T_rsub_int_7();
178         assertEquals(32769, t.run(Short.MIN_VALUE));
179         assertEquals(-32766, t.run(Short.MAX_VALUE));
180     }
181 
182     /**
183      * @title (a = 1, b = 1, b-a = 0)
184      */
testB12()185     public void testB12() {
186         T_rsub_int_7 t = new T_rsub_int_7();
187         assertEquals(0, t.run(1));
188     }
189 
190     /**
191      * @constraint A23
192      * @title number of registers
193      */
testVFE1()194     public void testVFE1() {
195         try {
196             Class.forName("dot.junit.opcodes.rsub_int.d.T_rsub_int_8");
197             fail("expected a verification exception");
198         } catch (Throwable t) {
199             DxUtil.checkVerifyException(t);
200         }
201     }
202 
203 
204 
205     /**
206      * @constraint B1
207      * @title types of arguments - double, int
208      */
testVFE2()209     public void testVFE2() {
210         try {
211             Class.forName("dot.junit.opcodes.rsub_int.d.T_rsub_int_9");
212             fail("expected a verification exception");
213         } catch (Throwable t) {
214             DxUtil.checkVerifyException(t);
215         }
216     }
217 
218     /**
219      * @constraint B1
220      * @title types of arguments - long, int
221      */
testVFE3()222     public void testVFE3() {
223         try {
224             Class.forName("dot.junit.opcodes.rsub_int.d.T_rsub_int_10");
225             fail("expected a verification exception");
226         } catch (Throwable t) {
227             DxUtil.checkVerifyException(t);
228         }
229     }
230 
231     /**
232      * @constraint B1
233      * @title types of arguments - reference, int
234      */
testVFE4()235     public void testVFE4() {
236         try {
237             Class.forName("dot.junit.opcodes.rsub_int.d.T_rsub_int_11");
238             fail("expected a verification exception");
239         } catch (Throwable t) {
240             DxUtil.checkVerifyException(t);
241         }
242     }
243 
244     /**
245      * @constraint B1
246      * @title Types of arguments - float, int. The verifier checks that ints
247      * and floats are not used interchangeably.
248      */
testVFE5()249     public void testVFE5() {
250         try {
251             Class.forName("dot.junit.opcodes.rsub_int.d.T_rsub_int_12");
252             fail("expected a verification exception");
253         } catch (Throwable t) {
254             DxUtil.checkVerifyException(t);
255         }
256     }
257 }
258