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 dxc.junit.opcodes.iinc; 18 19 import dxc.junit.DxTestCase; 20 import dxc.junit.DxUtil; 21 import dxc.junit.opcodes.iinc.jm.T_iinc_1; 22 import dxc.junit.opcodes.iinc.jm.T_iinc_1_w; 23 import dxc.junit.opcodes.iinc.jm.T_iinc_2; 24 import dxc.junit.opcodes.iinc.jm.T_iinc_2_w; 25 import dxc.junit.opcodes.iinc.jm.T_iinc_3; 26 import dxc.junit.opcodes.iinc.jm.T_iinc_3_w; 27 import dxc.junit.opcodes.iinc.jm.T_iinc_4; 28 import dxc.junit.opcodes.iinc.jm.T_iinc_4_w; 29 import dxc.junit.opcodes.iinc.jm.T_iinc_5; 30 import dxc.junit.opcodes.iinc.jm.T_iinc_5_w; 31 import dxc.junit.opcodes.iinc.jm.T_iinc_6; 32 import dxc.junit.opcodes.iinc.jm.T_iinc_6_w; 33 34 public class Test_iinc extends DxTestCase { 35 36 /* 37 * NORMAL IINC VERSION 38 */ 39 40 /** 41 * @title Increment by 1 42 */ 43 public void testN1() { 44 T_iinc_1 t = new T_iinc_1(); 45 assertEquals(5, t.run(4)); 46 } 47 48 /** 49 * @title Increment by -1 50 */ 51 public void testN2() { 52 T_iinc_2 t = new T_iinc_2(); 53 assertEquals(3, t.run(4)); 54 } 55 56 /** 57 * @title Increment by 63 58 */ 59 public void testN3() { 60 T_iinc_3 t = new T_iinc_3(); 61 assertEquals(67, t.run(4)); 62 } 63 64 /** 65 * @title Increment by 0 66 */ 67 public void testB1() { 68 T_iinc_4 t = new T_iinc_4(); 69 assertEquals(Integer.MAX_VALUE, t.run(Integer.MAX_VALUE)); 70 } 71 72 /** 73 * @title Increment by 0 74 */ 75 public void testB2() { 76 T_iinc_4 t = new T_iinc_4(); 77 assertEquals(Integer.MIN_VALUE, t.run(Integer.MIN_VALUE)); 78 } 79 80 /** 81 * @title Increment by 127 82 */ 83 public void testB3() { 84 T_iinc_5 t = new T_iinc_5(); 85 assertEquals(128, t.run(1)); 86 } 87 88 /** 89 * @title Increment by 127 90 */ 91 public void testB4() { 92 T_iinc_5 t = new T_iinc_5(); 93 assertEquals(126, t.run(-1)); 94 } 95 96 /** 97 * @title Increment by 127 98 */ 99 public void testB5() { 100 T_iinc_5 t = new T_iinc_5(); 101 assertEquals(-2147483521, t.run(Integer.MIN_VALUE)); 102 } 103 104 /** 105 * @title Increment by -128 106 */ 107 public void testB6() { 108 T_iinc_6 t = new T_iinc_6(); 109 assertEquals(-127, t.run(1)); 110 } 111 112 /** 113 * @title Increment by -128 114 */ 115 public void testB7() { 116 T_iinc_6 t = new T_iinc_6(); 117 assertEquals(-128, t.run(0)); 118 } 119 120 /** 121 * @constraint 4.8.1.21 122 * @title index must be no greater than 123 * max_locals-1. 124 */ 125 public void testVFE1() { 126 try { 127 Class.forName("dxc.junit.opcodes.iinc.jm.T_iinc_7"); 128 fail("expected a verification exception"); 129 } catch (Throwable t) { 130 DxUtil.checkVerifyException(t); 131 } 132 } 133 134 /** 135 * @constraint 4.8.1.21 136 * @title index must be a nonnegative integer. 137 */ 138 public void testVFE2() { 139 try { 140 Class.forName("dxc.junit.opcodes.iinc.jm.T_iinc_8"); 141 fail("expected a verification exception"); 142 } catch (Throwable t) { 143 DxUtil.checkVerifyException(t); 144 } 145 } 146 147 /** 148 * @constraint 4.8.2.1 149 * @title type of argument - double 150 */ 151 public void testVFE3() { 152 try { 153 Class.forName("dxc.junit.opcodes.iinc.jm.T_iinc_9"); 154 fail("expected a verification exception"); 155 } catch (Throwable t) { 156 DxUtil.checkVerifyException(t); 157 } 158 } 159 160 /** 161 * @constraint 4.8.2.1 162 * @title type of argument - long 163 */ 164 public void testVFE4() { 165 try { 166 Class.forName("dxc.junit.opcodes.iinc.jm.T_iinc_10"); 167 fail("expected a verification exception"); 168 } catch (Throwable t) { 169 DxUtil.checkVerifyException(t); 170 } 171 } 172 173 /* 174 * WIDE IINC VERSION 175 */ 176 177 /** 178 * @title Increment by 1 179 */ 180 public void testN4() { 181 T_iinc_1_w t = new T_iinc_1_w(); 182 assertEquals(5, t.run(4)); 183 } 184 185 /** 186 * @title Increment by -1 187 */ 188 public void testN5() { 189 T_iinc_2_w t = new T_iinc_2_w(); 190 assertEquals(3, t.run(4)); 191 } 192 193 /** 194 * @title Increment by 7763 195 */ 196 public void testN6() { 197 T_iinc_3_w t = new T_iinc_3_w(); 198 assertEquals(7767, t.run(4)); 199 } 200 201 /** 202 * @title Increment by 0 203 */ 204 public void testB8() { 205 T_iinc_4_w t = new T_iinc_4_w(); 206 assertEquals(Integer.MAX_VALUE, t.run(Integer.MAX_VALUE)); 207 } 208 209 /** 210 * @title Increment by 0 211 */ 212 public void testB9() { 213 T_iinc_4_w t = new T_iinc_4_w(); 214 assertEquals(Integer.MIN_VALUE, t.run(Integer.MIN_VALUE)); 215 } 216 217 /** 218 * @title Increment by 32767 219 */ 220 public void testB10() { 221 T_iinc_5_w t = new T_iinc_5_w(); 222 assertEquals(32768, t.run(1)); 223 } 224 225 /** 226 * @title Increment by 32767 227 */ 228 public void testB11() { 229 T_iinc_5_w t = new T_iinc_5_w(); 230 assertEquals(32766, t.run(-1)); 231 } 232 233 /** 234 * @title Increment by 32767 235 */ 236 public void testB12() { 237 T_iinc_5_w t = new T_iinc_5_w(); 238 assertEquals(-2147450881, t.run(Integer.MIN_VALUE)); 239 } 240 241 /** 242 * @title Increment by -32768 243 */ 244 public void testB13() { 245 T_iinc_6_w t = new T_iinc_6_w(); 246 assertEquals(-32767, t.run(1)); 247 } 248 249 /** 250 * @title Increment by -32768 251 */ 252 public void testB14() { 253 T_iinc_6_w t = new T_iinc_6_w(); 254 assertEquals(-32768, t.run(0)); 255 } 256 257 /** 258 * @constraint 4.8.1.25 259 * @title index must be no greater than 260 * max_locals-1. 261 */ 262 public void testVFE5() { 263 try { 264 Class.forName("dxc.junit.opcodes.iinc.jm.T_iinc_7_w"); 265 fail("expected a verification exception"); 266 } catch (Throwable t) { 267 DxUtil.checkVerifyException(t); 268 } 269 } 270 271 /** 272 * @constraint 4.8.1.25 273 * @title index must be a nonnegative integer. 274 */ 275 public void testVFE6() { 276 try { 277 Class.forName("dxc.junit.opcodes.iinc.jm.T_iinc_8_w"); 278 fail("expected a verification exception"); 279 } catch (Throwable t) { 280 DxUtil.checkVerifyException(t); 281 } 282 } 283 284 /** 285 * @constraint 4.8.2.1 286 * @title type of argument - double 287 */ 288 public void testVFE7() { 289 try { 290 Class.forName("dxc.junit.opcodes.iinc.jm.T_iinc_9_w"); 291 fail("expected a verification exception"); 292 } catch (Throwable t) { 293 DxUtil.checkVerifyException(t); 294 } 295 } 296 297 /** 298 * @constraint 4.8.2.1 299 * @title type of argument - long 300 */ 301 public void testVFE8() { 302 try { 303 Class.forName("dxc.junit.opcodes.iinc.jm.T_iinc_10_w"); 304 fail("expected a verification exception"); 305 } catch (Throwable t) { 306 DxUtil.checkVerifyException(t); 307 } 308 } 309 } 310