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.format.f1;
18 
19 import dot.junit.DxTestCase;
20 import dot.junit.DxUtil;
21 
22 public class Test_f1 extends DxTestCase {
23 
24     /**
25      * @constraint n/a
26      * @title size of dex file shall be greater than size of header
27      */
testVFE1()28     public void testVFE1() {
29         try {
30             Class.forName("dot.junit.format.f1.d.T_f1_1");
31             fail("expected a verification exception");
32         } catch (Throwable t) {
33             DxUtil.checkVerifyException(t);
34         }
35     }
36 
37     /**
38      * @constraint n/a
39      * @title check that .dex with wrong magic is rejected
40      */
testVFE2()41     public void testVFE2() {
42         try {
43             Class.forName("dot.junit.format.f1.d.T_f1_2");
44             fail("expected a verification exception");
45         } catch (Throwable t) {
46             DxUtil.checkVerifyException(t);
47         }
48     }
49 
50     /**
51      * @constraint n/a
52      * @title check that .dex with wrong version is rejected
53      */
testVFE3()54     public void testVFE3() {
55         try {
56             Class.forName("dot.junit.format.f1.d.T_f1_3");
57             fail("expected a verification exception");
58         } catch (Throwable t) {
59             DxUtil.checkVerifyException(t);
60         }
61     }
62 
63     /**
64      * @constraint n/a
65      * @title check that .dex with wrong endian_tag is rejected
66      */
testVFE4()67     public void testVFE4() {
68         try {
69             Class.forName("dot.junit.format.f1.d.T_f1_4");
70             fail("expected a verification exception");
71         } catch (Throwable t) {
72             DxUtil.checkVerifyException(t);
73         }
74     }
75 
76     /**
77      * @constraint n/a
78      * @title check that .dex with wrong header size is rejected
79      */
testVFE5()80     public void testVFE5() {
81         try {
82             Class.forName("dot.junit.format.f1.d.T_f1_5");
83             fail("expected a verification exception");
84         } catch (Throwable t) {
85             DxUtil.checkVerifyException(t);
86         }
87     }
88 
89     /**
90      * @constraint n/a
91      * @title  file length must be equal to length in header
92      */
testVFE6()93     public void testVFE6() {
94         try {
95             Class.forName("dot.junit.format.f1.d.T_f1_6");
96             fail("expected a verification exception");
97         } catch (Throwable t) {
98             DxUtil.checkVerifyException(t);
99         }
100     }
101 
102     /**
103      * @constraint n/a
104      * @title  header->map_off != 0
105      */
testVFE7()106     public void testVFE7() {
107         try {
108             Class.forName("dot.junit.format.f1.d.T_f1_7");
109             fail("expected a verification exception");
110         } catch (Throwable t) {
111             DxUtil.checkVerifyException(t);
112         }
113     }
114 
115     /**
116      * @constraint n/a
117      * @title number of classes in dex shall be > 0
118      */
testVFE8()119     public void testVFE8() {
120         try {
121             Class.forName("dot.junit.format.f1.d.T_f1_8");
122             fail("expected a verification exception");
123         } catch (Throwable t) {
124             DxUtil.checkVerifyException(t);
125         }
126     }
127 
128     /**
129      * @constraint n/a
130      * @title check that .dex with wrong checksum is rejected
131      */
testVFE9()132     public void testVFE9() {
133         try {
134             Class.forName("dot.junit.format.f1.d.T_f1_9");
135             fail("expected a verification exception but this test may fail if this check is not enforced");
136         } catch (Throwable t) {
137             DxUtil.checkVerifyException(t);
138         }
139     }
140 
141     /**
142      * @constraint n/a
143      * @title check that .dex with wrong signature is rejected
144      */
145 //    public void testVFE10() {
146 //        try {
147 //            Class.forName("dot.junit.format.f1.d.T_f1_10");
148 //            fail("expected a verification exception but this test may fail if this check is not enforced");
149 //        } catch (Throwable t) {
150 //            DxUtil.checkVerifyException(t);
151 //        }
152 //    }
153 
154     /**
155      * @constraint n/a
156      * @title header and map section mismatch
157      */
testVFE11()158     public void testVFE11() {
159         try {
160             Class.forName("dot.junit.format.f1.d.T_f1_11");
161             fail("expected a verification exception");
162         } catch (Throwable t) {
163             DxUtil.checkVerifyException(t);
164         }
165     }
166 
167     /**
168      * @constraint n/a
169      * @title overlapping sections
170      */
testVFE12()171     public void testVFE12() {
172         try {
173             Class.forName("dot.junit.format.f1.d.T_f1_12");
174             fail("expected a verification exception");
175         } catch (Throwable t) {
176             DxUtil.checkVerifyException(t);
177         }
178     }
179 }
180