1d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath/* 2d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath * Licensed to the Apache Software Foundation (ASF) under one or more 3d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath * contributor license agreements. See the NOTICE file distributed with 4d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath * this work for additional information regarding copyright ownership. 5d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath * The ASF licenses this file to You under the Apache License, Version 2.0 6d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath * (the "License"); you may not use this file except in compliance with 7d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath * the License. You may obtain a copy of the License at 8d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath * 9d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath * http://www.apache.org/licenses/LICENSE-2.0 10d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath * 11d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath * Unless required by applicable law or agreed to in writing, software 12d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath * distributed under the License is distributed on an "AS IS" BASIS, 13d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath * See the License for the specific language governing permissions and 15d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath * limitations under the License. 16d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath */ 17d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamathpackage org.apache.harmony.tests.java.util.zip; 18d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 19d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamathimport java.io.ByteArrayInputStream; 20d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamathimport java.io.ByteArrayOutputStream; 21d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamathimport java.io.EOFException; 22d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamathimport java.io.IOException; 23d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamathimport java.io.InputStream; 24d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamathimport java.io.File; 25d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamathimport java.io.FileInputStream; 26d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamathimport java.util.zip.DeflaterOutputStream; 27d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamathimport java.util.zip.Inflater; 28d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamathimport java.util.zip.InflaterInputStream; 29d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 30d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamathimport junit.framework.TestCase; 31d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamathimport tests.support.resource.Support_Resources; 32d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 33d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamathpublic class InflaterInputStreamTest extends TestCase { 34d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 35d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // files hyts_construO,hyts_construOD,hyts_construODI needs to be 36d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // included as resources 37d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath byte outPutBuf[] = new byte[500]; 38d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 39d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath class MyInflaterInputStream extends InflaterInputStream { 40d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath MyInflaterInputStream(InputStream in) { 41d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath super(in); 42d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 43d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 44d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath MyInflaterInputStream(InputStream in, Inflater infl) { 45d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath super(in, infl); 46d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 47d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 48d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath MyInflaterInputStream(InputStream in, Inflater infl, int size) { 49d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath super(in, infl, size); 50d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 51d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 52d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath void myFill() throws IOException { 53d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath fill(); 54d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 55d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 56d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 57d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath /** 58d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath * java.util.zip.InflaterInputStream#InflaterInputStream(java.io.InputStream) 59d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath */ 60d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath public void test_ConstructorLjava_io_InputStream() throws IOException { 61d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath //FIXME This test doesn't pass in Harmony classlib or Sun 5.0_7 RI 62d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath /* 63d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath int result = 0; 64d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath int buffer[] = new int[500]; 65d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath InputStream infile = Support_Resources 66d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath .getStream("hyts_construO.bin"); 67d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 68d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath InflaterInputStream inflatIP = new InflaterInputStream(infile); 69d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 70d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath int i = 0; 71d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath while ((result = inflatIP.read()) != -1) { 72d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath buffer[i] = result; 73d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath i++; 74d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 75d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath inflatIP.close(); 76d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath */ 77d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 78d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 79d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath /** 80d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath * java.util.zip.InflaterInputStream#InflaterInputStream(java.io.InputStream, 81d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath *java.util.zip.Inflater) 82d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath */ 83d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath public void test_ConstructorLjava_io_InputStreamLjava_util_zip_Inflater() throws IOException { 84d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath byte byteArray[] = new byte[100]; 85d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath InputStream infile = Support_Resources.getStream("hyts_construOD.bin"); 86d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath Inflater inflate = new Inflater(); 87d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath InflaterInputStream inflatIP = new InflaterInputStream(infile, 88d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath inflate); 89d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 90d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath inflatIP.read(byteArray, 0, 5);// only suppose to read in 5 bytes 91d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath inflatIP.close(); 92d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 93d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 94d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath /** 95d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath * java.util.zip.InflaterInputStream#InflaterInputStream(java.io.InputStream, 96d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath *java.util.zip.Inflater, int) 97d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath */ 98d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath public void test_ConstructorLjava_io_InputStreamLjava_util_zip_InflaterI() throws IOException { 99d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath int result = 0; 100d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath int buffer[] = new int[500]; 101d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath InputStream infile = Support_Resources.getStream("hyts_construODI.bin"); 102d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath Inflater inflate = new Inflater(); 103d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath InflaterInputStream inflatIP = new InflaterInputStream(infile, 104d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath inflate, 1); 105d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 106d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath int i = 0; 107d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath while ((result = inflatIP.read()) != -1) { 108d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath buffer[i] = result; 109d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath i++; 110d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 111d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath inflatIP.close(); 112d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 113d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 114d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath /** 115d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath * java.util.zip.InflaterInputStream#InflaterInputStream(java.io.InputStream, 116d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath *java.util.zip.Inflater, int) 117d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath */ 118d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath public void test_ConstructorLjava_io_InputStreamLjava_util_zip_InflaterI_1() throws IOException { 119d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath InputStream infile = Support_Resources.getStream("hyts_construODI.bin"); 120d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath Inflater inflate = new Inflater(); 121d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath InflaterInputStream inflatIP = null; 122d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath try { 123d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath inflatIP = new InflaterInputStream(infile, null, 1); 124d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath fail("NullPointerException expected"); 125d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } catch (NullPointerException NPE) { 126d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath //expected 127d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 128d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 129d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath try { 130d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath inflatIP = new InflaterInputStream(null, inflate, 1); 131d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath fail("NullPointerException expected"); 132d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } catch (NullPointerException NPE) { 133d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath //expected 134d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 135d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 136d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath try { 137d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath inflatIP = new InflaterInputStream(infile, inflate, -1); 138d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath fail("IllegalArgumentException expected"); 139d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } catch (IllegalArgumentException iae) { 140d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath //expected 141d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 142d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 143d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 144d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath /** 145d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath * java.util.zip.InflaterInputStream#mark(int) 146d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath */ 147d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath public void test_markI() { 148d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath InputStream is = new ByteArrayInputStream(new byte[10]); 149d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath InflaterInputStream iis = new InflaterInputStream(is); 150d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // mark do nothing, do no check 151d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath iis.mark(0); 152d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath iis.mark(-1); 153d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath iis.mark(10000000); 154d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 155d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 156d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath /** 157d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath * java.util.zip.InflaterInputStream#markSupported() 158d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath */ 159d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath public void test_markSupported() { 160d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath InputStream is = new ByteArrayInputStream(new byte[10]); 161d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath InflaterInputStream iis = new InflaterInputStream(is); 162d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath assertFalse(iis.markSupported()); 163d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath assertTrue(is.markSupported()); 164d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 165d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 166d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath /** 167d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath * java.util.zip.InflaterInputStream#read() 168d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath */ 169d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath public void test_read() throws IOException { 170d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath int result = 0; 171d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath int buffer[] = new int[500]; 172d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath byte orgBuffer[] = { 1, 3, 4, 7, 8 }; 173d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath InputStream infile = Support_Resources 174d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath .getStream("hyts_construOD.bin"); 175d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath Inflater inflate = new Inflater(); 176d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath InflaterInputStream inflatIP = new InflaterInputStream(infile, 177d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath inflate); 178d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 179d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath int i = 0; 180d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath while ((result = inflatIP.read()) != -1) { 181d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath buffer[i] = result; 182d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath i++; 183d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 184d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath inflatIP.close(); 185d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 186d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath for (int j = 0; j < orgBuffer.length; j++) { 187d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath assertEquals( 188d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath "original compressed data did not equal decompressed data", 189d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath orgBuffer[j], buffer[j]); 190d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 191d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 192d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 193d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath /** 194d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath * java.util.zip.InflaterInputStream#read(byte [], int, int) 195d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath */ 196d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath public void test_read_LBII() throws IOException { 197d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath int result = 0; 198d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath InputStream infile = Support_Resources.getStream("hyts_construOD.bin"); 199d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath Inflater inflate = new Inflater(); 200d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath InflaterInputStream inflatIP = new InflaterInputStream(infile, inflate); 201d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 202d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath byte[] b = new byte[3]; 203d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath try { 204d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath result = inflatIP.read(null, 0, 1); 205d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath fail("NullPointerException expected"); 206d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } catch (NullPointerException npe) { 207d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath //expected 208d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 209d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 210d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath assertEquals(0, inflatIP.read(b, 0, 0)); 211d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 212d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath try { 213d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath result = inflatIP.read(b, 5, 2); //offset higher 214d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath fail("IndexOutOfBoundsException expected"); 215d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } catch (IndexOutOfBoundsException iobe) { 216d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath //expected 217d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 218d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 219d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath inflatIP.close(); 220d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath try { 221d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath inflatIP.read(b, 0, 1); //read after close 222d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath fail("IOException expected"); 223d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } catch (IOException ioe) { 224d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath //expected 225d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 226d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 227d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 228d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath public void testAvailableNonEmptySource() throws Exception { 229d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // this byte[] is a deflation of these bytes: { 1, 3, 4, 6 } 230d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath byte[] deflated = { 72, -119, 99, 100, 102, 97, 3, 0, 0, 31, 0, 15, 0 }; 231d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath InputStream in = new InflaterInputStream(new ByteArrayInputStream(deflated)); 232d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // InflaterInputStream.available() returns either 1 or 0, even though 233d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // that contradicts the behavior defined in InputStream.available() 234d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath assertEquals(1, in.read()); 235d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath assertEquals(1, in.available()); 236d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath assertEquals(3, in.read()); 237d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath assertEquals(1, in.available()); 238d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath assertEquals(4, in.read()); 239d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath assertEquals(1, in.available()); 240d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath assertEquals(6, in.read()); 241d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath assertEquals(0, in.available()); 242d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath assertEquals(-1, in.read()); 243d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath assertEquals(-1, in.read()); 244d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 245d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 246d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath public void testAvailableSkip() throws Exception { 247d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // this byte[] is a deflation of these bytes: { 1, 3, 4, 6 } 248d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath byte[] deflated = { 72, -119, 99, 100, 102, 97, 3, 0, 0, 31, 0, 15, 0 }; 249d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath InputStream in = new InflaterInputStream(new ByteArrayInputStream(deflated)); 250d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath assertEquals(1, in.available()); 251d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath assertEquals(4, in.skip(4)); 252d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath assertEquals(0, in.available()); 253d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 254d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 255d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath public void testAvailableEmptySource() throws Exception { 256d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // this byte[] is a deflation of the empty file 257d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath byte[] deflated = { 120, -100, 3, 0, 0, 0, 0, 1 }; 258d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath InputStream in = new InflaterInputStream(new ByteArrayInputStream(deflated)); 259d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath assertEquals(-1, in.read()); 260d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath assertEquals(-1, in.read()); 261d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath assertEquals(0, in.available()); 262d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 263d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 264d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath /** 265d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath * java.util.zip.InflaterInputStream#read(byte[], int, int) 266d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath */ 267d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath public void test_read$BII() throws IOException { 268d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath byte[] test = new byte[507]; 269d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath for (int i = 0; i < 256; i++) { 270d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath test[i] = (byte) i; 271d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 272d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath for (int i = 256; i < test.length; i++) { 273d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath test[i] = (byte) (256 - i); 274d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 275d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath ByteArrayOutputStream baos = new ByteArrayOutputStream(); 276d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath DeflaterOutputStream dos = new DeflaterOutputStream(baos); 277d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath dos.write(test); 278d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath dos.close(); 279d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath InputStream is = new ByteArrayInputStream(baos.toByteArray()); 280d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath InflaterInputStream iis = new InflaterInputStream(is); 281d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath byte[] outBuf = new byte[530]; 282d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath int result = 0; 283d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath while (true) { 284d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath result = iis.read(outBuf, 0, 5); 285d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath if (result == -1) { 286d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath //"EOF was reached"; 287d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath break; 288d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 289d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 290d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath try { 291d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath iis.read(outBuf, -1, 10); 292d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath fail("should throw IOOBE."); 293d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } catch (IndexOutOfBoundsException e) { 294d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // expected; 295d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 296d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 297d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 298d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath public void test_read$BII2() throws IOException { 299d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath File resources = Support_Resources.createTempFolder(); 300d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath Support_Resources.copyFile(resources, null, "Broken_manifest.jar"); 301d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath FileInputStream fis = new FileInputStream(new File(resources, 302d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath "Broken_manifest.jar")); 303d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath InflaterInputStream iis = new InflaterInputStream(fis); 304d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath byte[] outBuf = new byte[530]; 305d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 306d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath iis.close(); 307d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath try { 308d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath iis.read(outBuf, 0, 5); 309d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath fail("IOException expected"); 310d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } catch (IOException ee) { 311d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // expected. 312d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 313d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 314d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 315d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath public void test_read$BII3() throws IOException { 316d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath File resources = Support_Resources.createTempFolder(); 317d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath Support_Resources.copyFile(resources, null, "Broken_manifest.jar"); 318d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath FileInputStream fis = new FileInputStream(new File(resources, 319d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath "Broken_manifest.jar")); 320d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath InflaterInputStream iis = new InflaterInputStream(fis); 321d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath byte[] outBuf = new byte[530]; 322d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 323d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath try { 324d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath iis.read(); 325d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath fail("IOException expected."); 326d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } catch (IOException ee) { 327d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // expected 328d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 329d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 330d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 331d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath /** 332d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath * java.util.zip.InflaterInputStream#reset() 333d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath */ 334d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath public void test_reset() { 335d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath InputStream is = new ByteArrayInputStream(new byte[10]); 336d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath InflaterInputStream iis = new InflaterInputStream(is); 337d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath try { 338d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath iis.reset(); 339d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath fail("Should throw IOException"); 340d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } catch (IOException e) { 341d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // correct 342d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 343d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 344d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 345d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath /** 346d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath * java.util.zip.InflaterInputStream#skip(long) 347d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath */ 348d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath public void test_skipJ() throws IOException { 349d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath InputStream is = Support_Resources.getStream("hyts_available.tst"); 350d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath InflaterInputStream iis = new InflaterInputStream(is); 351d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 352d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // Tests for skipping a negative number of bytes. 353d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath try { 354d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath iis.skip(-3); 355d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath fail("IllegalArgumentException not thrown"); 356d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } catch (IllegalArgumentException e) { 357d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // Expected 358d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 359d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath assertEquals("Incorrect Byte Returned.", 5, iis.read()); 360d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 361d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath try { 362d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath iis.skip(Integer.MIN_VALUE); 363d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath fail("IllegalArgumentException not thrown"); 364d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } catch (IllegalArgumentException e) { 365d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // Expected 366d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 367d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath assertEquals("Incorrect Byte Returned.", 4, iis.read()); 368d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 369d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // Test to make sure the correct number of bytes were skipped 370d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath assertEquals("Incorrect Number Of Bytes Skipped.", 3, iis.skip(3)); 371d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 372d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // Test to see if the number of bytes skipped returned is true. 373d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath assertEquals("Incorrect Byte Returned.", 7, iis.read()); 374d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 375d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath assertEquals("Incorrect Number Of Bytes Skipped.", 0, iis.skip(0)); 376d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath assertEquals("Incorrect Byte Returned.", 0, iis.read()); 377d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 378d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // Test for skipping more bytes than available in the stream 379d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath assertEquals("Incorrect Number Of Bytes Skipped.", 2, iis.skip(4)); 380d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath assertEquals("Incorrect Byte Returned.", -1, iis.read()); 381d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath iis.close(); 382d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 383d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 384d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath /** 385d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath * java.util.zip.InflaterInputStream#skip(long) 386d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath */ 387d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath public void test_skipJ2() throws IOException { 388d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath int result = 0; 389d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath int buffer[] = new int[100]; 390d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath byte orgBuffer[] = { 1, 3, 4, 7, 8 }; 391d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 392d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // testing for negative input to skip 393d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath InputStream infile = Support_Resources 394d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath .getStream("hyts_construOD.bin"); 395d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath Inflater inflate = new Inflater(); 396d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath InflaterInputStream inflatIP = new InflaterInputStream(infile, 397d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath inflate, 10); 398d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath long skip; 399d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath try { 400d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath skip = inflatIP.skip(Integer.MIN_VALUE); 401d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath fail("Expected IllegalArgumentException when skip() is called with negative parameter"); 402d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } catch (IllegalArgumentException e) { 403d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // Expected 404d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 405d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath inflatIP.close(); 406d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 407d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // testing for number of bytes greater than input. 408d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath InputStream infile2 = Support_Resources 409d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath .getStream("hyts_construOD.bin"); 410d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath InflaterInputStream inflatIP2 = new InflaterInputStream(infile2); 411d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 412d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // looked at how many bytes the skip skipped. It is 413d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // 5 and its supposed to be the entire input stream. 414d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 415d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath skip = inflatIP2.skip(Integer.MAX_VALUE); 416d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // System.out.println(skip); 417d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath assertEquals("method skip() returned wrong number of bytes skipped", 418d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 5, skip); 419d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 420d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // test for skipping of 2 bytes 421d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath InputStream infile3 = Support_Resources 422d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath .getStream("hyts_construOD.bin"); 423d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath InflaterInputStream inflatIP3 = new InflaterInputStream(infile3); 424d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath skip = inflatIP3.skip(2); 425d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath assertEquals("the number of bytes returned by skip did not correspond with its input parameters", 426d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 2, skip); 427d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath int i = 0; 428d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath result = 0; 429d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath while ((result = inflatIP3.read()) != -1) { 430d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath buffer[i] = result; 431d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath i++; 432d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 433d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath inflatIP2.close(); 434d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 435d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath for (int j = 2; j < orgBuffer.length; j++) { 436d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath assertEquals( 437d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath "original compressed data did not equal decompressed data", 438d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath orgBuffer[j], buffer[j - 2]); 439d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 440d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 441d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 442d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath /** 443d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath * java.util.zip.InflaterInputStream#available() 444d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath */ 445d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath public void test_available() throws IOException { 446d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath InputStream is = Support_Resources.getStream("hyts_available.tst"); 447d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath InflaterInputStream iis = new InflaterInputStream(is); 448d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 449d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath int available; 450d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath for (int i = 0; i < 11; i++) { 451d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath iis.read(); 452d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath available = iis.available(); 453d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath if (available == 0) { 454d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath assertEquals("Expected no more bytes to read", -1, iis.read()); 455d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } else { 456d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath assertEquals("Bytes Available Should Return 1.", 1, available); 457d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 458d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 459d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 460d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath iis.close(); 461d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath try { 462d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath iis.available(); 463d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath fail("available after close should throw IOException."); 464d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } catch (IOException e) { 465d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // Expected 466d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 467d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 468d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 469d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath /** 470d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath * java.util.zip.InflaterInputStream#close() 471d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath */ 472d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath public void test_close() throws IOException { 473d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath InflaterInputStream iin = new InflaterInputStream( 474d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath new ByteArrayInputStream(new byte[0])); 475d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath iin.close(); 476d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 477d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // test for exception 478d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath iin.close(); 479d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 480d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath} 481