blob: f28817cdc5a469a72753e77337a32f769bde0218 [file] [log] [blame]
The Android Open Source Projectb5de22c2012-04-01 00:00:00 -07001/*
2 * Licensed to the Apache Software Foundation (ASF) under one or more
3 * contributor license agreements. See the NOTICE file distributed with
4 * this work for additional information regarding copyright ownership.
5 * The ASF licenses this file to You under the Apache License, Version 2.0
6 * (the "License"); you may not use this file except in compliance with
7 * the License. You may obtain a copy of the License at
8 *
9 * http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 */
17
18package libcore.java.util.zip;
19
20import java.io.ByteArrayOutputStream;
21import java.io.File;
22import java.io.FileInputStream;
23import java.io.IOException;
24import java.io.InputStream;
25import java.util.zip.ZipEntry;
26import java.util.zip.ZipException;
27import java.util.zip.ZipInputStream;
28import java.util.zip.ZipOutputStream;
29import junit.framework.TestCase;
30import tests.support.resource.Support_Resources;
31
32public class OldZipInputStreamTest extends TestCase {
33 private ZipInputStream zis;
34 private byte[] dataBytes = "Some data in my file".getBytes();
35
36 @Override
37 protected void setUp() throws IOException {
38 InputStream is = Support_Resources.getStream("hyts_ZipFile.zip");
39 if (is == null) {
40 System.out.println("file hyts_ZipFile.zip can not be found");
41 }
42 zis = new ZipInputStream(is);
43
44 ByteArrayOutputStream bos = new ByteArrayOutputStream();
45 ZipOutputStream zos = new ZipOutputStream(bos);
46 ZipEntry entry = new ZipEntry("myFile");
47 zos.putNextEntry(entry);
48 zos.write(dataBytes);
49 zos.closeEntry();
50 zos.close();
51 }
52
53 @Override
54 protected void tearDown() throws IOException {
55 if (zis != null) {
56 zis.close();
57 }
58 }
59
60 public void test_skipJ() throws Exception {
61 File resources = Support_Resources.createTempFolder();
62 Support_Resources.copyFile(resources, null, "Broken_manifest.jar");
63 FileInputStream fis = new FileInputStream(new File(resources,
64 "Broken_manifest.jar"));
65
66 ZipInputStream zis1 = new ZipInputStream(fis);
67
68 zis1.getNextEntry();
69 zis1.getNextEntry();
70
71 try {
72 zis1.skip(10);
73 fail("ZipException expected");
74 } catch (ZipException ee) {
75 // expected
76 }
77
78 try {
79 zis1.close(); // Android throws exception here, already!
80 zis1.skip(10); // But RI here, only!
81 fail("IOException expected");
82 } catch (IOException ee) {
83 // expected
84 }
85 }
86
87 public void test_read$BII() throws Exception {
88 byte[] rbuf;
89
90 File resources = Support_Resources.createTempFolder();
91 Support_Resources.copyFile(resources, null, "Broken_manifest.jar");
92 FileInputStream fis = new FileInputStream(new File(resources,
93 "Broken_manifest.jar"));
94
95 ZipInputStream zis1 = new ZipInputStream(fis);
96
97 zis1.getNextEntry();
98 zis1.getNextEntry();
99
100 rbuf = new byte[100];
101
102 try {
103 zis1.read(rbuf, 10, 90);
104 fail("ZipException expected");
105 } catch (ZipException ee) {
106 // expected
107 }
108
109 try {
110 zis1.close(); // Android throws exception here, already!
111 zis1.read(rbuf, 10, 90); // But RI here, only!
112 fail("IOException expected");
113 } catch (IOException ee) {
114 // expected
115 }
116 }
117
118 public void test_closeEntry() throws Exception {
119 zis.getNextEntry();
120 zis.closeEntry();
121 zis.getNextEntry();
122 zis.close();
123 try {
124 zis.closeEntry();
125 fail("IOException expected");
126 } catch (IOException ee) {
127 // expected
128 }
129 File resources = Support_Resources.createTempFolder();
130 Support_Resources.copyFile(resources, null, "Broken_manifest.jar");
131 FileInputStream fis = new FileInputStream(new File(resources,
132 "Broken_manifest.jar"));
133
134 ZipInputStream zis1 = new ZipInputStream(fis);
135
136 try {
137 for (int i = 0; i < 6; i++) {
138 zis1.getNextEntry();
139 zis1.closeEntry();
140 }
141 fail("ZipException expected");
142 } catch (ZipException ee) {
143 // expected
144 }
145 }
146
147 class Mock_ZipInputStream extends ZipInputStream {
148 boolean createFlag = false;
149
150 public Mock_ZipInputStream(InputStream arg0) {
151 super(arg0);
152 }
153
154 boolean getCreateFlag() {
155 return createFlag;
156 }
157
158 protected ZipEntry createZipEntry(String name) {
159 createFlag = true;
160 return super.createZipEntry(name);
161 }
162 }
163
164 public void test_createZipEntryLjava_lang_String() throws Exception {
165
166 File resources = Support_Resources.createTempFolder();
167 Support_Resources.copyFile(resources, null, "Broken_manifest.jar");
168 File fl = new File(resources, "Broken_manifest.jar");
169 FileInputStream fis = new FileInputStream(fl);
170
171 Mock_ZipInputStream zis1 = new Mock_ZipInputStream(fis);
172 assertFalse(zis1.getCreateFlag());
173 zis1.getNextEntry();
174 assertTrue(zis1.getCreateFlag());
175 }
176}