• 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.opc_goto;
18 
19 import dot.junit.DxTestCase;
20 import dot.junit.DxUtil;
21 import dot.junit.opcodes.opc_goto.d.T_opc_goto_1;
22 
23 public class Test_opc_goto extends DxTestCase {
24    /**
25     * @title forward and backward goto. This test also tests constraint C17 allowing to have
26      * backward goto as a last opcode in the method.
27     */
testN1()28    public void testN1() {
29        T_opc_goto_1 t = new T_opc_goto_1();
30        assertEquals(0, t.run(20));
31    }
32 
33    /**
34     * @constraint A6
35     * @title branch target is inside instruction
36     */
testVFE1()37    public void testVFE1() {
38        try {
39            Class.forName("dot.junit.opcodes.opc_goto.d.T_opc_goto_2");
40            fail("expected a verification exception");
41        } catch (Throwable t) {
42            DxUtil.checkVerifyException(t);
43        }
44    }
45 
46    /**
47     * @constraint A6
48     * @title branch target shall be inside the method
49     */
testVFE2()50    public void testVFE2() {
51        try {
52            Class.forName("dot.junit.opcodes.opc_goto.d.T_opc_goto_3");
53            fail("expected a verification exception");
54        } catch (Throwable t) {
55            DxUtil.checkVerifyException(t);
56        }
57    }
58 
59    /**
60     * @constraint n/a
61     * @title zero offset
62     */
testVFE3()63    public void testVFE3() {
64        try {
65            Class.forName("dot.junit.opcodes.opc_goto.d.T_opc_goto_4");
66            fail("expected a verification exception");
67        } catch (Throwable t) {
68            DxUtil.checkVerifyException(t);
69        }
70    }
71 
72 }
73