1f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes/* 2adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Licensed to the Apache Software Foundation (ASF) under one or more 3adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * contributor license agreements. See the NOTICE file distributed with 4adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * this work for additional information regarding copyright ownership. 5adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * The ASF licenses this file to You under the Apache License, Version 2.0 6adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * (the "License"); you may not use this file except in compliance with 7adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the License. You may obtain a copy of the License at 8f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * 9adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 10f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * 11adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Unless required by applicable law or agreed to in writing, software 12adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 13adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * See the License for the specific language governing permissions and 15adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * limitations under the License. 16adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 17adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 18adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpackage org.apache.harmony.archive.tests.java.util.zip; 19adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 20adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport tests.support.Support_PlatformFile; 21adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport tests.support.resource.Support_Resources; 22adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 23adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.io.ByteArrayOutputStream; 24adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.io.File; 25adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.io.FileOutputStream; 26ab28398a565e5ce8a56cdfd50ac6226e5317cf66The Android Open Source Projectimport java.io.FilePermission; 27adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.io.IOException; 28adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.io.InputStream; 29adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.io.OutputStream; 30adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.Permission; 31adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.Enumeration; 32adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.zip.ZipEntry; 33adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.zip.ZipException; 34adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.zip.ZipFile; 35fce022be38a2c79f9cdc8d9fea33c72cf2f16528Elliott Hughesimport libcore.java.lang.ref.FinalizationTester; 36adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 37adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpublic class ZipFileTest extends junit.framework.TestCase { 38adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 39adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public byte[] getAllBytesFromStream(InputStream is) throws IOException { 40adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ByteArrayOutputStream bs = new ByteArrayOutputStream(); 41ab28398a565e5ce8a56cdfd50ac6226e5317cf66The Android Open Source Project byte[] buf = new byte[512]; 42adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project int iRead; 43adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project int off; 44adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project while (is.available() > 0) { 45adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project iRead = is.read(buf, 0, buf.length); 46adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if (iRead > 0) bs.write(buf, 0, iRead); 47adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 48adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return bs.toByteArray(); 49adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 50adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 51adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // the file hyts_zipFile.zip in setup must be included as a resource 52adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private String tempFileName; 53adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 54adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private ZipFile zfile; 55adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 56adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // custom security manager 57adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project SecurityManager sm = new SecurityManager() { 58adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project final String forbidenPermissionAction = "read"; 59adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 60adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 61adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 62adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void checkPermission(Permission perm) { 63ab28398a565e5ce8a56cdfd50ac6226e5317cf66The Android Open Source Project // only check if it's a FilePermission because Locale checks 64ab28398a565e5ce8a56cdfd50ac6226e5317cf66The Android Open Source Project // for a PropertyPermission with action"read" to get system props. 6557995e8186b54515d5a03bf2ab104c3dc247f1b6Jesse Wilson if (perm instanceof FilePermission 66ab28398a565e5ce8a56cdfd50ac6226e5317cf66The Android Open Source Project && perm.getActions().equals(forbidenPermissionAction)) { 67adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project throw new SecurityException(); 68adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 69adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 70adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project }; 71adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 72adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 73229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * java.util.zip.ZipFile#ZipFile(java.io.File) 74adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 75adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_ConstructorLjava_io_File() { 76adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Test for method java.util.zip.ZipFile(java.io.File) 77adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Used to test", true); 78adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 79adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 80adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 81229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * java.util.zip.ZipFile#ZipFile(java.io.File, int) 82adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 83adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_ConstructorLjava_io_FileI() throws IOException { 84adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project zfile.close(); // about to reopen the same temp file 85adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project File file = new File(tempFileName); 86adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ZipFile zip = new ZipFile(file, ZipFile.OPEN_DELETE | ZipFile.OPEN_READ); 87adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project zip.close(); 88adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Zip should not exist", !file.exists()); 89adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project file = new File(tempFileName); 90adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project file.delete(); 91adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 92adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project zip = new ZipFile(file, ZipFile.OPEN_READ); 93adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("IOException expected"); 94adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IOException ee) { 95adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // expected 96adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 97adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project file = new File(tempFileName); 98adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 99adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project zip = new ZipFile(file, -1); 100adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("IllegalArgumentException expected"); 101adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IllegalArgumentException ee) { 102adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // expected 103adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 104adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 105adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 106adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 107adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @throws IOException 108229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * java.util.zip.ZipFile#ZipFile(java.lang.String) 109adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 110adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_ConstructorLjava_lang_String() throws IOException { 111adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project System.setProperty("user.dir", System.getProperty("java.io.tmpdir")); 11257995e8186b54515d5a03bf2ab104c3dc247f1b6Jesse Wilson 113adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project zfile.close(); // about to reopen the same temp file 114adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ZipFile zip = new ZipFile(tempFileName); 115adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project zip.close(); 116adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project File file = File.createTempFile("zip", "tmp"); 117adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 118adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project zip = new ZipFile(file.getName()); 119adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("ZipException expected"); 120adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (ZipException ee) { 121adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // expected 122adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 123adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project file.delete(); 124adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 125adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 126adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project protected ZipEntry test_finalize1(ZipFile zip) { 127adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return zip.getEntry("File1.txt"); 128adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 129adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 130adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project protected ZipFile test_finalize2(File file) throws IOException { 131adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return new ZipFile(file); 132adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 133adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 134adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 135229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * java.util.zip.ZipFile#finalize() 136adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 137adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_finalize() throws IOException { 138adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project InputStream in = Support_Resources.getStream("hyts_ZipFile.zip"); 139adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project File file = Support_Resources.createTempFile(".jar"); 140adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project OutputStream out = new FileOutputStream(file); 141adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project int result; 142adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project byte[] buf = new byte[4096]; 143adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project while ((result = in.read(buf)) != -1) { 144adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project out.write(buf, 0, result); 145adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 146adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project in.close(); 147adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project out.close(); 148adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /* 149adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * ZipFile zip = new ZipFile(file); ZipEntry entry1 = 150adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * zip.getEntry("File1.txt"); assertNotNull("Did not find entry", 151adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * entry1); entry1 = null; zip = null; 152adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 153adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 154fce022be38a2c79f9cdc8d9fea33c72cf2f16528Elliott Hughes assertNotNull("Did not find entry", test_finalize1(test_finalize2(file))); 155fce022be38a2c79f9cdc8d9fea33c72cf2f16528Elliott Hughes FinalizationTester.induceFinalization(); 156adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project file.delete(); 157adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Zip should not exist", !file.exists()); 158adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 159adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 160adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 161adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @throws IOException 162229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * java.util.zip.ZipFile#close() 163adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 164adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_close() throws IOException { 165adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Test for method void java.util.zip.ZipFile.close() 166adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project File fl = new File(tempFileName); 167adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ZipFile zf = new ZipFile(fl); 168adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project InputStream is1 = zf.getInputStream(zf.getEntry("File1.txt")); 169adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project InputStream is2 = zf.getInputStream(zf.getEntry("File2.txt")); 170adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 171adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project is1.read(); 172adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project is2.read(); 173adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 174adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project zf.close(); 175adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 176adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 177adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project is1.read(); 178adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("IOException expected"); 179adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IOException ee) { 180adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // expected 181adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 182adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 183adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 184adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project is2.read(); 185adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("IOException expected"); 186adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IOException ee) { 187adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // expected 188adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 189adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 190adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 191adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 192229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * java.util.zip.ZipFile#entries() 193adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 19457995e8186b54515d5a03bf2ab104c3dc247f1b6Jesse Wilson public void test_entries() throws Exception { 195adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Test for method java.util.Enumeration java.util.zip.ZipFile.entries() 196adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Enumeration<? extends ZipEntry> enumer = zfile.entries(); 197adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project int c = 0; 198adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project while (enumer.hasMoreElements()) { 199adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ++c; 200adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project enumer.nextElement(); 201adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 202adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Incorrect number of entries returned: " + c, c == 6); 203adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 20457995e8186b54515d5a03bf2ab104c3dc247f1b6Jesse Wilson Enumeration<? extends ZipEntry> enumeration = zfile.entries(); 20557995e8186b54515d5a03bf2ab104c3dc247f1b6Jesse Wilson zfile.close(); 206f7f90ec7f63bd80b7724d64ea664fdb589052fceJesse Wilson try { 207f7f90ec7f63bd80b7724d64ea664fdb589052fceJesse Wilson enumeration.nextElement(); 208f7f90ec7f63bd80b7724d64ea664fdb589052fceJesse Wilson fail("did not detect closed file"); 209f7f90ec7f63bd80b7724d64ea664fdb589052fceJesse Wilson } catch (IllegalStateException expected) { 210f7f90ec7f63bd80b7724d64ea664fdb589052fceJesse Wilson } 211f7f90ec7f63bd80b7724d64ea664fdb589052fceJesse Wilson 212adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 21357995e8186b54515d5a03bf2ab104c3dc247f1b6Jesse Wilson enumeration.hasMoreElements(); 214f7f90ec7f63bd80b7724d64ea664fdb589052fceJesse Wilson fail("did not detect closed file"); 215f7f90ec7f63bd80b7724d64ea664fdb589052fceJesse Wilson } catch (IllegalStateException expected) { 216f7f90ec7f63bd80b7724d64ea664fdb589052fceJesse Wilson } 217f7f90ec7f63bd80b7724d64ea664fdb589052fceJesse Wilson 218f7f90ec7f63bd80b7724d64ea664fdb589052fceJesse Wilson try { 219f7f90ec7f63bd80b7724d64ea664fdb589052fceJesse Wilson zfile.entries(); 220f7f90ec7f63bd80b7724d64ea664fdb589052fceJesse Wilson fail("did not detect closed file"); 221f7f90ec7f63bd80b7724d64ea664fdb589052fceJesse Wilson } catch (IllegalStateException expected) { 222adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 223adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 224adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 225adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 226229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * java.util.zip.ZipFile#getEntry(java.lang.String) 227adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 228adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_getEntryLjava_lang_String() throws IOException { 229adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Test for method java.util.zip.ZipEntry 230adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // java.util.zip.ZipFile.getEntry(java.lang.String) 231adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project java.util.zip.ZipEntry zentry = zfile.getEntry("File1.txt"); 232adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNotNull("Could not obtain ZipEntry", zentry); 233adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project int r; 234adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project InputStream in; 235adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 236adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project zentry = zfile.getEntry("testdir1/File1.txt"); 237adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNotNull("Could not obtain ZipEntry: testdir1/File1.txt", zentry); 238adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project zentry = zfile.getEntry("testdir1/"); 239adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNotNull("Could not obtain ZipEntry: testdir1/", zentry); 240adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project in = zfile.getInputStream(zentry); 241adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNotNull("testdir1/ should not have null input stream", in); 242adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project r = in.read(); 243adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project in.close(); 244adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("testdir1/ should not contain data", -1, r); 245adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 246adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project zentry = zfile.getEntry("testdir1/testdir1"); 247adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNotNull("Could not obtain ZipEntry: testdir1/testdir1", zentry); 248adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project in = zfile.getInputStream(zentry); 249adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project byte[] buf = new byte[256]; 250adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project r = in.read(buf); 251adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project in.close(); 252adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("incorrect contents", "This is also text", new String(buf, 253adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 0, r)); 254adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 255adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 256adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_getEntryLjava_lang_String_AndroidOnly() throws IOException { 257adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project java.util.zip.ZipEntry zentry = zfile.getEntry("File1.txt"); 258adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNotNull("Could not obtain ZipEntry", zentry); 259adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project int r; 260adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project InputStream in; 261adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 262adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project zentry = zfile.getEntry("testdir1"); 2631b965e80442efbf1802adb7113749c385c7466eaJorg Pleumann assertNotNull("Must be able to obtain ZipEntry: testdir1", zentry); 264adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project in = zfile.getInputStream(zentry); 2651b965e80442efbf1802adb7113749c385c7466eaJorg Pleumann /* 2661b965e80442efbf1802adb7113749c385c7466eaJorg Pleumann * Android delivers empty InputStream, RI no InputStream at all. The 2671b965e80442efbf1802adb7113749c385c7466eaJorg Pleumann * spec doesn't clarify this, so we need to deal with both situations. 2681b965e80442efbf1802adb7113749c385c7466eaJorg Pleumann */ 2691b965e80442efbf1802adb7113749c385c7466eaJorg Pleumann int data = -1; 2701b965e80442efbf1802adb7113749c385c7466eaJorg Pleumann if (in != null) { 2711b965e80442efbf1802adb7113749c385c7466eaJorg Pleumann data = in.read(); 2721b965e80442efbf1802adb7113749c385c7466eaJorg Pleumann in.close(); 2731b965e80442efbf1802adb7113749c385c7466eaJorg Pleumann } 2741b965e80442efbf1802adb7113749c385c7466eaJorg Pleumann assertEquals("Must not be able to read directory data", -1, data); 275adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 276adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 277adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_getEntryLjava_lang_String_Ex() throws IOException { 278adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project java.util.zip.ZipEntry zentry = zfile.getEntry("File1.txt"); 279adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNotNull("Could not obtain ZipEntry", zentry); 280adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 281adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project zfile.close(); 282adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 283f7f90ec7f63bd80b7724d64ea664fdb589052fceJesse Wilson zfile.getEntry("File2.txt"); 284f7f90ec7f63bd80b7724d64ea664fdb589052fceJesse Wilson fail("IllegalStateException expected"); 285adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IllegalStateException ee) { 286adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 287adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 288adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 289adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 290adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @throws IOException 291229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * java.util.zip.ZipFile#getInputStream(java.util.zip.ZipEntry) 292adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 293adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_getInputStreamLjava_util_zip_ZipEntry() throws IOException { 294adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Test for method java.io.InputStream 295adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // java.util.zip.ZipFile.getInputStream(java.util.zip.ZipEntry) 296adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ZipEntry zentry = null; 297adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project InputStream is = null; 298adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 299adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project zentry = zfile.getEntry("File1.txt"); 300adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project is = zfile.getInputStream(zentry); 301adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project byte[] rbuf = new byte[1000]; 302adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project int r; 303adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project is.read(rbuf, 0, r = (int) zentry.getSize()); 304adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("getInputStream read incorrect data", "This is text", 305adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project new String(rbuf, 0, r)); 306adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (java.io.IOException e) { 307adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("IOException during getInputStream"); 308adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } finally { 309adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 310adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project is.close(); 311adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (java.io.IOException e) { 312adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Failed to close input stream"); 313adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 314adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 315adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 316adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project zentry = zfile.getEntry("File2.txt"); 317adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project zfile.close(); 318adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 319adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project is = zfile.getInputStream(zentry); 320adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("IllegalStateException expected"); 321adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IllegalStateException ee) { 322adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // expected 323adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 324adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 325adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // ZipException can not be checked. Stream object returned or null. 326adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 327adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 328adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 329229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * java.util.zip.ZipFile#getName() 330adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 331adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_getName() { 332adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Test for method java.lang.String java.util.zip.ZipFile.getName() 333adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Returned incorrect name: " + zfile.getName(), zfile 334adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .getName().equals(tempFileName)); 335adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 336adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 337adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 338adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @throws IOException 339229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * java.util.zip.ZipFile#size() 340adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 341adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_size() throws IOException { 342adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals(6, zfile.size()); 343adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project zfile.close(); 344adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 345adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project zfile.size(); 346f7f90ec7f63bd80b7724d64ea664fdb589052fceJesse Wilson fail("IllegalStateException expected"); 347f7f90ec7f63bd80b7724d64ea664fdb589052fceJesse Wilson } catch (IllegalStateException expected) { 348adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 349adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 350adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 351adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 352229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * java.io.InputStream#reset() 35357995e8186b54515d5a03bf2ab104c3dc247f1b6Jesse Wilson */ 35457995e8186b54515d5a03bf2ab104c3dc247f1b6Jesse Wilson public void test_reset() throws IOException { 35557995e8186b54515d5a03bf2ab104c3dc247f1b6Jesse Wilson // read an uncompressed entry 35657995e8186b54515d5a03bf2ab104c3dc247f1b6Jesse Wilson ZipEntry zentry = zfile.getEntry("File1.txt"); 35757995e8186b54515d5a03bf2ab104c3dc247f1b6Jesse Wilson InputStream is = zfile.getInputStream(zentry); 35857995e8186b54515d5a03bf2ab104c3dc247f1b6Jesse Wilson byte[] rbuf1 = new byte[6]; 35957995e8186b54515d5a03bf2ab104c3dc247f1b6Jesse Wilson byte[] rbuf2 = new byte[6]; 36057995e8186b54515d5a03bf2ab104c3dc247f1b6Jesse Wilson int r1, r2; 36157995e8186b54515d5a03bf2ab104c3dc247f1b6Jesse Wilson r1 = is.read(rbuf1); 36257995e8186b54515d5a03bf2ab104c3dc247f1b6Jesse Wilson assertEquals(rbuf1.length, r1); 36357995e8186b54515d5a03bf2ab104c3dc247f1b6Jesse Wilson r2 = is.read(rbuf2); 36457995e8186b54515d5a03bf2ab104c3dc247f1b6Jesse Wilson assertEquals(rbuf2.length, r2); 36557995e8186b54515d5a03bf2ab104c3dc247f1b6Jesse Wilson 36640fbee4b04c5345a3a4e4297f46909d7f76378ccElliott Hughes try { 36740fbee4b04c5345a3a4e4297f46909d7f76378ccElliott Hughes is.reset(); 36840fbee4b04c5345a3a4e4297f46909d7f76378ccElliott Hughes fail(); 36940fbee4b04c5345a3a4e4297f46909d7f76378ccElliott Hughes } catch (IOException expected) { 37040fbee4b04c5345a3a4e4297f46909d7f76378ccElliott Hughes } 37157995e8186b54515d5a03bf2ab104c3dc247f1b6Jesse Wilson is.close(); 37257995e8186b54515d5a03bf2ab104c3dc247f1b6Jesse Wilson 37357995e8186b54515d5a03bf2ab104c3dc247f1b6Jesse Wilson // read a compressed entry 37457995e8186b54515d5a03bf2ab104c3dc247f1b6Jesse Wilson byte[] rbuf3 = new byte[4185]; 37557995e8186b54515d5a03bf2ab104c3dc247f1b6Jesse Wilson ZipEntry zentry2 = zfile.getEntry("File3.txt"); 37657995e8186b54515d5a03bf2ab104c3dc247f1b6Jesse Wilson is = zfile.getInputStream(zentry2); 37757995e8186b54515d5a03bf2ab104c3dc247f1b6Jesse Wilson r1 = is.read(rbuf3); 37857995e8186b54515d5a03bf2ab104c3dc247f1b6Jesse Wilson assertEquals(4183, r1); 37940fbee4b04c5345a3a4e4297f46909d7f76378ccElliott Hughes try { 38040fbee4b04c5345a3a4e4297f46909d7f76378ccElliott Hughes is.reset(); 38140fbee4b04c5345a3a4e4297f46909d7f76378ccElliott Hughes fail(); 38240fbee4b04c5345a3a4e4297f46909d7f76378ccElliott Hughes } catch (IOException expected) { 38340fbee4b04c5345a3a4e4297f46909d7f76378ccElliott Hughes } 38457995e8186b54515d5a03bf2ab104c3dc247f1b6Jesse Wilson is.close(); 38557995e8186b54515d5a03bf2ab104c3dc247f1b6Jesse Wilson 38657995e8186b54515d5a03bf2ab104c3dc247f1b6Jesse Wilson is = zfile.getInputStream(zentry2); 38757995e8186b54515d5a03bf2ab104c3dc247f1b6Jesse Wilson r1 = is.read(rbuf3, 0, 3000); 38857995e8186b54515d5a03bf2ab104c3dc247f1b6Jesse Wilson assertEquals(3000, r1); 38940fbee4b04c5345a3a4e4297f46909d7f76378ccElliott Hughes try { 39040fbee4b04c5345a3a4e4297f46909d7f76378ccElliott Hughes is.reset(); 39140fbee4b04c5345a3a4e4297f46909d7f76378ccElliott Hughes fail(); 39240fbee4b04c5345a3a4e4297f46909d7f76378ccElliott Hughes } catch (IOException expected) { 39340fbee4b04c5345a3a4e4297f46909d7f76378ccElliott Hughes } 39457995e8186b54515d5a03bf2ab104c3dc247f1b6Jesse Wilson is.close(); 39557995e8186b54515d5a03bf2ab104c3dc247f1b6Jesse Wilson } 39657995e8186b54515d5a03bf2ab104c3dc247f1b6Jesse Wilson 39757995e8186b54515d5a03bf2ab104c3dc247f1b6Jesse Wilson /** 398229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * java.io.InputStream#reset() 39957995e8186b54515d5a03bf2ab104c3dc247f1b6Jesse Wilson */ 40057995e8186b54515d5a03bf2ab104c3dc247f1b6Jesse Wilson public void test_reset_subtest0() throws IOException { 40157995e8186b54515d5a03bf2ab104c3dc247f1b6Jesse Wilson // read an uncompressed entry 40257995e8186b54515d5a03bf2ab104c3dc247f1b6Jesse Wilson ZipEntry zentry = zfile.getEntry("File1.txt"); 40357995e8186b54515d5a03bf2ab104c3dc247f1b6Jesse Wilson InputStream is = zfile.getInputStream(zentry); 40457995e8186b54515d5a03bf2ab104c3dc247f1b6Jesse Wilson byte[] rbuf1 = new byte[12]; 40557995e8186b54515d5a03bf2ab104c3dc247f1b6Jesse Wilson byte[] rbuf2 = new byte[12]; 40657995e8186b54515d5a03bf2ab104c3dc247f1b6Jesse Wilson int r = is.read(rbuf1, 0, 4); 40757995e8186b54515d5a03bf2ab104c3dc247f1b6Jesse Wilson assertEquals(4, r); 40857995e8186b54515d5a03bf2ab104c3dc247f1b6Jesse Wilson is.mark(0); 40957995e8186b54515d5a03bf2ab104c3dc247f1b6Jesse Wilson r = is.read(rbuf1); 41057995e8186b54515d5a03bf2ab104c3dc247f1b6Jesse Wilson assertEquals(8, r); 41157995e8186b54515d5a03bf2ab104c3dc247f1b6Jesse Wilson assertEquals(-1, is.read()); 41257995e8186b54515d5a03bf2ab104c3dc247f1b6Jesse Wilson 41340fbee4b04c5345a3a4e4297f46909d7f76378ccElliott Hughes try { 41440fbee4b04c5345a3a4e4297f46909d7f76378ccElliott Hughes is.reset(); 41540fbee4b04c5345a3a4e4297f46909d7f76378ccElliott Hughes fail(); 41640fbee4b04c5345a3a4e4297f46909d7f76378ccElliott Hughes } catch (IOException expected) { 41740fbee4b04c5345a3a4e4297f46909d7f76378ccElliott Hughes } 41840fbee4b04c5345a3a4e4297f46909d7f76378ccElliott Hughes 41957995e8186b54515d5a03bf2ab104c3dc247f1b6Jesse Wilson is.close(); 42057995e8186b54515d5a03bf2ab104c3dc247f1b6Jesse Wilson 42157995e8186b54515d5a03bf2ab104c3dc247f1b6Jesse Wilson // read a compressed entry 42257995e8186b54515d5a03bf2ab104c3dc247f1b6Jesse Wilson byte[] rbuf3 = new byte[4185]; 42357995e8186b54515d5a03bf2ab104c3dc247f1b6Jesse Wilson ZipEntry zentry2 = zfile.getEntry("File3.txt"); 42457995e8186b54515d5a03bf2ab104c3dc247f1b6Jesse Wilson is = zfile.getInputStream(zentry2); 42557995e8186b54515d5a03bf2ab104c3dc247f1b6Jesse Wilson r = is.read(rbuf3, 0, 3000); 42657995e8186b54515d5a03bf2ab104c3dc247f1b6Jesse Wilson assertEquals(3000, r); 42757995e8186b54515d5a03bf2ab104c3dc247f1b6Jesse Wilson is.mark(0); 42857995e8186b54515d5a03bf2ab104c3dc247f1b6Jesse Wilson r = is.read(rbuf3); 42957995e8186b54515d5a03bf2ab104c3dc247f1b6Jesse Wilson assertEquals(1183, r); 43057995e8186b54515d5a03bf2ab104c3dc247f1b6Jesse Wilson assertEquals(-1, is.read()); 43157995e8186b54515d5a03bf2ab104c3dc247f1b6Jesse Wilson 43240fbee4b04c5345a3a4e4297f46909d7f76378ccElliott Hughes try { 43340fbee4b04c5345a3a4e4297f46909d7f76378ccElliott Hughes is.reset(); 43440fbee4b04c5345a3a4e4297f46909d7f76378ccElliott Hughes fail(); 43540fbee4b04c5345a3a4e4297f46909d7f76378ccElliott Hughes } catch (IOException expected) { 43640fbee4b04c5345a3a4e4297f46909d7f76378ccElliott Hughes } 43740fbee4b04c5345a3a4e4297f46909d7f76378ccElliott Hughes 43857995e8186b54515d5a03bf2ab104c3dc247f1b6Jesse Wilson is.close(); 43957995e8186b54515d5a03bf2ab104c3dc247f1b6Jesse Wilson } 44057995e8186b54515d5a03bf2ab104c3dc247f1b6Jesse Wilson 44157995e8186b54515d5a03bf2ab104c3dc247f1b6Jesse Wilson /** 442adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Sets up the fixture, for example, open a network connection. This method 443adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * is called before a test is executed. 444adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 445adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @Override 446adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project protected void setUp() { 447adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 448adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Create a local copy of the file since some tests want to alter 449adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // information. 450adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project tempFileName = System.getProperty("java.io.tmpdir"); 451adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String separator = System.getProperty("file.separator"); 452adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if (tempFileName.charAt(tempFileName.length() - 1) == separator 453adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .charAt(0)) { 454adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project tempFileName = Support_PlatformFile.getNewPlatformFile( 455adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project tempFileName, "gabba.zip"); 456adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } else { 457adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project tempFileName = Support_PlatformFile.getNewPlatformFile( 458adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project tempFileName + separator, "gabba.zip"); 459adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 460adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 461adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project File f = new File(tempFileName); 462adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project f.delete(); 463adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project InputStream is = Support_Resources.getStream("hyts_ZipFile.zip"); 464adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project FileOutputStream fos = new FileOutputStream(f); 465adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project byte[] rbuf = getAllBytesFromStream(is); 466adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fos.write(rbuf, 0, rbuf.length); 467adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project is.close(); 468adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fos.close(); 469adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project zfile = new ZipFile(f); 470adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (Exception e) { 471adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project System.out.println("Exception during ZipFile setup:"); 472adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project e.printStackTrace(); 473adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 474adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 475adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 476adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 477adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Tears down the fixture, for example, close a network connection. This 478adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * method is called after a test is executed. 479adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 480adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @Override 481adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project protected void tearDown() { 482adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 483adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if (zfile != null) { 484adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Note zfile is a user-defined zip file used by other tests and 485adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // should not be deleted 486adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project zfile.close(); 487adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project tempFileName = System.getProperty("java.io.tmpdir"); 488adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String separator = System.getProperty("file.separator"); 489adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if (tempFileName.charAt(tempFileName.length() - 1) == separator 490adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .charAt(0)) { 491adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project tempFileName = Support_PlatformFile.getNewPlatformFile( 492adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project tempFileName, "gabba.zip"); 493adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } else { 494adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project tempFileName = Support_PlatformFile.getNewPlatformFile( 495adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project tempFileName + separator, "gabba.zip"); 496adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 497adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 498adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project File f = new File(tempFileName); 499adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project f.delete(); 500adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 501adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (Exception e) { 502adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 503adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 504adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 505adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project} 506