1 package dot.junit.opcodes.if_eqz; 2 3 import dot.junit.DxTestCase; 4 import dot.junit.DxUtil; 5 import dot.junit.opcodes.if_eqz.d.T_if_eqz_1; 6 import dot.junit.opcodes.if_eqz.d.T_if_eqz_2; 7 import dot.junit.opcodes.if_eqz.d.T_if_eqz_3; 8 import dot.junit.opcodes.if_eqz.d.T_if_eqz_4; 9 10 public class Test_if_eqz extends DxTestCase { 11 12 /** 13 * @title Argument = 5 and -5 14 */ testN1()15 public void testN1() { 16 T_if_eqz_1 t = new T_if_eqz_1(); 17 /* 18 * Compare with 1234 to check that in case of failed comparison 19 * execution proceeds at the address following if_acmpeq instruction 20 */ 21 assertEquals(1234, t.run(5)); 22 assertEquals(1234, t.run(-5)); 23 } 24 25 /** 26 * @title Arguments = not null 27 */ testN2()28 public void testN2() { 29 T_if_eqz_2 t = new T_if_eqz_2(); 30 String str = "abc"; 31 assertEquals(1234, t.run(str)); 32 } 33 34 /** 35 * @title Arguments = Integer.MAX_VALUE 36 */ testB1()37 public void testB1() { 38 T_if_eqz_1 t = new T_if_eqz_1(); 39 assertEquals(1234, t.run(Integer.MAX_VALUE)); 40 } 41 42 /** 43 * @title Arguments = Integer.MIN_VALUE 44 */ testB2()45 public void testB2() { 46 T_if_eqz_1 t = new T_if_eqz_1(); 47 assertEquals(1234, t.run(Integer.MIN_VALUE)); 48 } 49 50 /** 51 * @title Arguments = 0 52 */ testB5()53 public void testB5() { 54 T_if_eqz_1 t = new T_if_eqz_1(); 55 assertEquals(1, t.run(0)); 56 } 57 58 /** 59 * @title Compare with null 60 */ testB6()61 public void testB6() { 62 T_if_eqz_4 t = new T_if_eqz_4(); 63 assertEquals(1, t.run(null)); 64 } 65 66 /** 67 * @constraint A23 68 * @title number of registers 69 */ testVFE1()70 public void testVFE1() { 71 load("dot.junit.opcodes.if_eqz.d.T_if_eqz_5", VerifyError.class); 72 } 73 74 75 /** 76 * @constraint B1 77 * @title types of arguments - double 78 */ testVFE2()79 public void testVFE2() { 80 load("dot.junit.opcodes.if_eqz.d.T_if_eqz_6", VerifyError.class); 81 } 82 83 /** 84 * @constraint B1 85 * @title types of arguments - long 86 */ testVFE3()87 public void testVFE3() { 88 load("dot.junit.opcodes.if_eqz.d.T_if_eqz_7", VerifyError.class); 89 } 90 91 /** 92 * @constraint A6 93 * @title branch target shall be inside the method 94 */ testVFE4()95 public void testVFE4() { 96 load("dot.junit.opcodes.if_eqz.d.T_if_eqz_9", VerifyError.class); 97 } 98 99 /** 100 * @constraint A6 101 * @title branch target shall not be "inside" instruction 102 */ testVFE5()103 public void testVFE5() { 104 load("dot.junit.opcodes.if_eqz.d.T_if_eqz_10", VerifyError.class); 105 } 106 107 /** 108 * @constraint n/a 109 * @title branch must not be 0 110 */ testVFE6()111 public void testVFE6() { 112 load("dot.junit.opcodes.if_eqz.d.T_if_eqz_11", VerifyError.class); 113 } 114 115 /** 116 * @constraint B1 117 * @title Type of argument - float. The verifier checks that ints 118 * and floats are not used interchangeably. 119 */ testVFE7()120 public void testVFE7() { 121 load("dot.junit.opcodes.if_eqz.d.T_if_eqz_3", VerifyError.class); 122 } 123 124 } 125