1b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson/* 2b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson * Licensed to the Apache Software Foundation (ASF) under one or more 3b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson * contributor license agreements. See the NOTICE file distributed with 4b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson * this work for additional information regarding copyright ownership. 5b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson * The ASF licenses this file to You under the Apache License, Version 2.0 6b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson * (the "License"); you may not use this file except in compliance with 7b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson * the License. You may obtain a copy of the License at 8b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson * 9b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson * http://www.apache.org/licenses/LICENSE-2.0 10b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson * 11b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson * Unless required by applicable law or agreed to in writing, software 12b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson * distributed under the License is distributed on an "AS IS" BASIS, 13b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson * See the License for the specific language governing permissions and 15b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson * limitations under the License. 16b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson */ 17b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson 18b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilsonpackage libcore.java.util.zip; 19b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson 20b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilsonimport java.io.ByteArrayOutputStream; 21b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilsonimport java.io.File; 22b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilsonimport java.io.FileOutputStream; 23b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilsonimport java.io.IOException; 24b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilsonimport java.io.InputStream; 25b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilsonimport java.util.zip.ZipEntry; 26b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilsonimport java.util.zip.ZipFile; 272b7c83942a5e28c53698232182193d5118028e6cNarayan Kamathimport tests.support.resource.Support_Resources; 28b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson 29b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilsonpublic class OldZipFileTest extends junit.framework.TestCase { 30b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson 31b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson public byte[] getAllBytesFromStream(InputStream is) throws IOException { 32b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson ByteArrayOutputStream bs = new ByteArrayOutputStream(); 33b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson byte[] buf = new byte[512]; 34b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson int iRead; 35b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson while ((iRead = is.read(buf, 0, buf.length)) != -1) { 36b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson bs.write(buf, 0, iRead); 37b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson } 38b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson return bs.toByteArray(); 39b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson } 40b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson 41b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson public void test_size() throws IOException { 42b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson zfile.close(); 43b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson try { 44b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson zfile.size(); 45b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson fail("IllegalStateException expected"); 46b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson } catch (IllegalStateException expected) { 47b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson } 48b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson } 49b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson 50b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson public void test_getEntryLjava_lang_String_AndroidOnly() throws IOException { 51b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson java.util.zip.ZipEntry zentry = zfile.getEntry("File1.txt"); 52b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson assertNotNull("Could not obtain ZipEntry", zentry); 53b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson int r; 54b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson InputStream in; 55b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson 56b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson zentry = zfile.getEntry("testdir1"); 57b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson assertNotNull("Must be able to obtain ZipEntry: testdir1", zentry); 58b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson in = zfile.getInputStream(zentry); 59b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson /* 60b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson * Android delivers empty InputStream, RI no InputStream at all. The 61b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson * spec doesn't clarify this, so we need to deal with both situations. 62b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson */ 63b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson int data = -1; 64b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson if (in != null) { 65b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson data = in.read(); 66b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson in.close(); 67b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson } 68b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson assertEquals("Must not be able to read directory data", -1, data); 69b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson } 70b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson 71b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson // the file hyts_zipFile.zip in setup must be included as a resource 72b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson private String tempFileName; 73b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson 74b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson private ZipFile zfile; 75b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson 76b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson /** 77b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson * @throws IOException 78229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * java.util.zip.ZipFile#close() 79b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson */ 80b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson public void test_close() throws IOException { 81b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson // Test for method void java.util.zip.ZipFile.close() 82b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson File fl = new File(tempFileName); 83b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson ZipFile zf = new ZipFile(fl); 84b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson InputStream is1 = zf.getInputStream(zf.getEntry("File1.txt")); 85b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson InputStream is2 = zf.getInputStream(zf.getEntry("File2.txt")); 86b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson 87b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson is1.read(); 88b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson is2.read(); 89b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson 90b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson zf.close(); 91b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson 92b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson try { 93b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson is1.read(); 94b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson fail("IOException expected"); 95b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson } catch (IOException ee) { 96b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson // expected 97b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson } 98b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson 99b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson try { 100b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson is2.read(); 101b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson fail("IOException expected"); 102b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson } catch (IOException ee) { 103b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson // expected 104b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson } 105b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson } 106b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson 107b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson public void test_getEntryLjava_lang_String_Ex() throws IOException { 108b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson java.util.zip.ZipEntry zentry = zfile.getEntry("File1.txt"); 109b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson assertNotNull("Could not obtain ZipEntry", zentry); 110b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson 111b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson zfile.close(); 112b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson try { 113b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson zfile.getEntry("File2.txt"); 114b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson fail("IllegalStateException expected"); 115b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson } catch (IllegalStateException ee) { 116b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson } 117b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson } 118b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson 119b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson /** 120b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson * @throws IOException 121229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * java.util.zip.ZipFile#getInputStream(java.util.zip.ZipEntry) 122b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson */ 123b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson public void test_getInputStreamLjava_util_zip_ZipEntry() throws IOException { 124b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson // Test for method java.io.InputStream 125b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson // java.util.zip.ZipFile.getInputStream(java.util.zip.ZipEntry) 126b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson ZipEntry zentry = null; 127b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson InputStream is = null; 128b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson 129b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson zentry = zfile.getEntry("File2.txt"); 130b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson zfile.close(); 131b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson try { 132b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson is = zfile.getInputStream(zentry); 133b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson fail("IllegalStateException expected"); 134b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson } catch (IllegalStateException ee) { 135b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson // expected 136b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson } 137b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson } 138b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson 139b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson /** 140b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson * Sets up the fixture, for example, open a network connection. This method 141b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson * is called before a test is executed. 142b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson */ 143b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson @Override 144b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson protected void setUp() throws IOException { 145b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson // Create a local copy of the file since some tests want to alter information. 1462b7c83942a5e28c53698232182193d5118028e6cNarayan Kamath File tempFile = File.createTempFile("OldZipFileTest", "zip"); 1472b7c83942a5e28c53698232182193d5118028e6cNarayan Kamath tempFileName = tempFile.getAbsolutePath(); 148b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson InputStream is = Support_Resources.getStream("hyts_ZipFile.zip"); 1492b7c83942a5e28c53698232182193d5118028e6cNarayan Kamath FileOutputStream fos = new FileOutputStream(tempFile); 150b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson byte[] rbuf = getAllBytesFromStream(is); 151b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson fos.write(rbuf, 0, rbuf.length); 152b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson is.close(); 153b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson fos.close(); 1542b7c83942a5e28c53698232182193d5118028e6cNarayan Kamath zfile = new ZipFile(tempFile); 155b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson } 156b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson 157b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson /** 158b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson * Tears down the fixture, for example, close a network connection. This 159b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson * method is called after a test is executed. 160b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson */ 161b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson @Override 162b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson protected void tearDown() throws IOException { 163b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson // Note zfile is a user-defined zip file used by other tests and 164b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson // should not be deleted 165b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson zfile.close(); 166b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson } 167b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson} 168