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.jar; 19b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson 20b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilsonimport java.io.BufferedInputStream; 21b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilsonimport java.io.ByteArrayInputStream; 22b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilsonimport java.io.File; 23b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilsonimport java.io.IOException; 24b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilsonimport java.io.InputStream; 25b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilsonimport java.util.jar.JarInputStream; 26b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilsonimport java.util.zip.ZipEntry; 27b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilsonimport java.util.zip.ZipException; 28b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilsonimport tests.support.resource.Support_Resources; 29b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson 30b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilsonpublic class OldJarInputStreamTest extends junit.framework.TestCase { 31b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson 32b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson public void test_ConstructorLjava_io_InputStreamZ() { 33b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson try { 34b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson // we need a buffered stream because ByteArrayInputStream.close() is a no-op 35b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson InputStream is = new BufferedInputStream(new ByteArrayInputStream(new byte[0])); 36b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson is.close(); 37b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson new JarInputStream(is, false); 38b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson fail("IOException expected"); 39b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson } catch (IOException ee) { 40b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson // expected 41b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson } 42b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson } 43b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson 44b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson 45b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson class Mock_JarInputStream extends JarInputStream { 46b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson 47b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson public Mock_JarInputStream(InputStream in) throws IOException { 48b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson super(in); 49b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson } 50b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson 51b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson public ZipEntry createZipEntry(String str) { 52b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson return super.createZipEntry(str); 53b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson } 54b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson } 55b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson 56b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson public void test_createZipEntryLjava_lang_String() throws Exception { 57b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson File resources = Support_Resources.createTempFolder(); 58b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson Support_Resources.copyFile(resources, null, "Broken_entry.jar"); 59b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson InputStream is = Support_Resources.getStream("Broken_entry.jar"); 60b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson Mock_JarInputStream mjis = new Mock_JarInputStream(is); 61b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson assertNotNull(mjis.createZipEntry("New entry")); 62b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson } 63b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson 64b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson public void test_read$ZII() throws Exception { 65b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson File resources = Support_Resources.createTempFolder(); 66b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson Support_Resources.copyFile(resources, null, "Broken_entry_data.jar"); 67b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson InputStream is = Support_Resources.getStream("Broken_entry_data.jar"); 68b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson JarInputStream jis = new JarInputStream(is, true); 69b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson byte b[] = new byte[100]; 70b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson 71b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson jis.getNextEntry(); 72b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson jis.read(b, 0, 100); 73b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson jis.getNextEntry(); 74b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson jis.getNextEntry(); 75b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson jis.getNextEntry(); 76b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson 77b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson try { 78b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson jis.read(b, 0, 100); 79b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson fail("ZipException expected"); 80b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson } catch (ZipException ee) { 81b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson // expected 82b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson } 83b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson 84b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson try { 85b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson jis.close(); // Android throws exception here, already! 86b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson jis.read(b, 0, 100); // But RI here, only! 87b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson fail("IOException expected"); 88b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson } catch (IOException ee) { 89b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson // expected 90b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson } 91b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson } 92b18d7a024d28fcce3497e2cd8d78642b5d057d45Jesse Wilson} 93