1e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes/*
2561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Licensed to the Apache Software Foundation (ASF) under one or more
3561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * contributor license agreements.  See the NOTICE file distributed with
4561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * this work for additional information regarding copyright ownership.
5561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * The ASF licenses this file to You under the Apache License, Version 2.0
6561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * (the "License"); you may not use this file except in compliance with
7561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * the License.  You may obtain a copy of the License at
8e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes *
9561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *     http://www.apache.org/licenses/LICENSE-2.0
10e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes *
11561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Unless required by applicable law or agreed to in writing, software
12561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * distributed under the License is distributed on an "AS IS" BASIS,
13561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * See the License for the specific language governing permissions and
15561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * limitations under the License.
16561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */
17561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughespackage org.apache.harmony.archive.tests.java.util.zip;
18561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
19561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.io.ByteArrayInputStream;
20561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.io.ByteArrayOutputStream;
21561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.io.EOFException;
22561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.io.IOException;
23561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.io.InputStream;
24561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.io.File;
25561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.io.FileInputStream;
26561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.zip.DeflaterOutputStream;
27561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.zip.Inflater;
28561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.zip.InflaterInputStream;
29561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
30561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport junit.framework.TestCase;
31561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport tests.support.resource.Support_Resources;
32561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
33561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughespublic class InflaterInputStreamTest extends TestCase {
34561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
35e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes	// files hyts_construO,hyts_construOD,hyts_construODI needs to be
36561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	// included as resources
37561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	byte outPutBuf[] = new byte[500];
38561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
39561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	class MyInflaterInputStream extends InflaterInputStream {
40561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		MyInflaterInputStream(InputStream in) {
41561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			super(in);
42561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
43561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
44561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		MyInflaterInputStream(InputStream in, Inflater infl) {
45561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			super(in, infl);
46561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
47561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
48561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		MyInflaterInputStream(InputStream in, Inflater infl, int size) {
49561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			super(in, infl, size);
50561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
51561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
52561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		void myFill() throws IOException {
53561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			fill();
54561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
55561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
56561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
57561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	/**
58561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * @tests java.util.zip.InflaterInputStream#InflaterInputStream(java.io.InputStream)
59561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 */
60561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void test_ConstructorLjava_io_InputStream() throws IOException {
61561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	    //FIXME This test doesn't pass in Harmony classlib or Sun 5.0_7 RI
62561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        /*
63561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		int result = 0;
64561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		int buffer[] = new int[500];
65561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		InputStream infile = Support_Resources
66e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes				.getStream("hyts_construO.bin");
67561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
68561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		InflaterInputStream inflatIP = new InflaterInputStream(infile);
69561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
70561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		int i = 0;
71561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		while ((result = inflatIP.read()) != -1) {
72561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			buffer[i] = result;
73561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			i++;
74561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
75561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		inflatIP.close();
76561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        */
77561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
78561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
79561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	/**
80561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * @tests java.util.zip.InflaterInputStream#InflaterInputStream(java.io.InputStream,
81561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 *        java.util.zip.Inflater)
82561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 */
83561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void test_ConstructorLjava_io_InputStreamLjava_util_zip_Inflater() throws IOException {
84561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		byte byteArray[] = new byte[100];
85e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes		InputStream infile = Support_Resources.getStream("hyts_construOD.bin");
86561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		Inflater inflate = new Inflater();
87561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		InflaterInputStream inflatIP = new InflaterInputStream(infile,
88561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				inflate);
89561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
90561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		inflatIP.read(byteArray, 0, 5);// only suppose to read in 5 bytes
91561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		inflatIP.close();
92561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
93561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
94561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	/**
95561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * @tests java.util.zip.InflaterInputStream#InflaterInputStream(java.io.InputStream,
96561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 *        java.util.zip.Inflater, int)
97561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 */
98561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void test_ConstructorLjava_io_InputStreamLjava_util_zip_InflaterI() throws IOException {
99561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		int result = 0;
100561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		int buffer[] = new int[500];
101e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes		InputStream infile = Support_Resources.getStream("hyts_construODI.bin");
102561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		Inflater inflate = new Inflater();
103561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		InflaterInputStream inflatIP = new InflaterInputStream(infile,
104561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				inflate, 1);
105561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
106561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		int i = 0;
107561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		while ((result = inflatIP.read()) != -1) {
108561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			buffer[i] = result;
109561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			i++;
110561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
111561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		inflatIP.close();
112561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
113561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
114561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
115561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.util.zip.InflaterInputStream#InflaterInputStream(java.io.InputStream,
116561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     *        java.util.zip.Inflater, int)
117561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
118561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_ConstructorLjava_io_InputStreamLjava_util_zip_InflaterI_1() throws IOException {
119e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes        InputStream infile = Support_Resources.getStream("hyts_construODI.bin");
120561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Inflater inflate = new Inflater();
121561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        InflaterInputStream inflatIP = null;
122561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try{
123561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            inflatIP = new InflaterInputStream(infile, null, 1);
124561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("NullPointerException expected");
125561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }catch(NullPointerException NPE){
126561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            //expected
127e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes        }
128561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
129561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try{
130561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            inflatIP = new InflaterInputStream(null, inflate, 1);
131561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("NullPointerException expected");
132561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }catch(NullPointerException NPE){
133561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            //expected
134e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes        }
135e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes
136561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try{
137561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            inflatIP = new InflaterInputStream(infile, inflate, -1);
138561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("IllegalArgumentException expected");
139561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }catch(IllegalArgumentException iae){
140561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            //expected
141e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes        }
142561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
143561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
144561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
145561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.util.zip.InflaterInputStream#mark(int)
146561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
147561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_markI() {
148561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        InputStream is = new ByteArrayInputStream(new byte[10]);
149561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        InflaterInputStream iis = new InflaterInputStream(is);
150561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // mark do nothing, do no check
151561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iis.mark(0);
152561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iis.mark(-1);
153561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iis.mark(10000000);
154561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
155561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
156561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
157561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.util.zip.InflaterInputStream#markSupported()
158561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
159561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_markSupported() {
160561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        InputStream is = new ByteArrayInputStream(new byte[10]);
161561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        InflaterInputStream iis = new InflaterInputStream(is);
162561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(iis.markSupported());
163561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(is.markSupported());
164561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
165561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
166561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	/**
167561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.util.zip.InflaterInputStream#read()
168561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
169561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void test_read() throws IOException {
170561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		int result = 0;
171561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		int buffer[] = new int[500];
172561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		byte orgBuffer[] = { 1, 3, 4, 7, 8 };
173561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		InputStream infile = Support_Resources
174e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes				.getStream("hyts_construOD.bin");
175561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		Inflater inflate = new Inflater();
176561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		InflaterInputStream inflatIP = new InflaterInputStream(infile,
177561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				inflate);
178561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
179561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		int i = 0;
180561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		while ((result = inflatIP.read()) != -1) {
181561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			buffer[i] = result;
182561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			i++;
183561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
184561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		inflatIP.close();
185561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
186561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		for (int j = 0; j < orgBuffer.length; j++) {
187561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			assertEquals(
188561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				"original compressed data did not equal decompressed data",
189561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				orgBuffer[j], buffer[j]);
190561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
191561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
192561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
193561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
194561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.util.zip.InflaterInputStream#read(byte [], int, int)
195561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
196561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_read_LBII() throws IOException {
197561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        int result = 0;
198e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes        InputStream infile = Support_Resources.getStream("hyts_construOD.bin");
199561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Inflater inflate = new Inflater();
200561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        InflaterInputStream inflatIP = new InflaterInputStream(infile, inflate);
201e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes
202561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        byte[] b = new byte[3];
203561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try{
204561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            result = inflatIP.read(null, 0, 1);
205561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("NullPointerException expected");
206561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }catch(NullPointerException npe){
207561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            //expected
208561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
209e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes
210561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(0, inflatIP.read(b, 0, 0));
211e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes
212561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try{
213561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            result = inflatIP.read(b, 5, 2); //offset higher
214561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("IndexOutOfBoundsException expected");
215561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }catch(IndexOutOfBoundsException iobe){
216561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            //expected
217561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
218e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes
219561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            inflatIP.close();
220561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
221561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            inflatIP.read(b, 0, 1); //read after close
222561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("IOException expected");
223561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }catch(IOException ioe){
224561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            //expected
225561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
226561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
227561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
228561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void testAvailableNonEmptySource() throws Exception {
229561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // this byte[] is a deflation of these bytes: { 1, 3, 4, 6 }
230561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        byte[] deflated = { 72, -119, 99, 100, 102, 97, 3, 0, 0, 31, 0, 15, 0 };
231561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        InputStream in = new InflaterInputStream(new ByteArrayInputStream(deflated));
232561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // InflaterInputStream.available() returns either 1 or 0, even though
233561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // that contradicts the behavior defined in InputStream.available()
234561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(1, in.read());
235561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(1, in.available());
236561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(3, in.read());
237561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(1, in.available());
238561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(4, in.read());
239561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(1, in.available());
240561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(6, in.read());
241561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(0, in.available());
242561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(-1, in.read());
243561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(-1, in.read());
244561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
245561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
246561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void testAvailableSkip() throws Exception {
247561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // this byte[] is a deflation of these bytes: { 1, 3, 4, 6 }
248561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        byte[] deflated = { 72, -119, 99, 100, 102, 97, 3, 0, 0, 31, 0, 15, 0 };
249561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        InputStream in = new InflaterInputStream(new ByteArrayInputStream(deflated));
250561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(1, in.available());
251561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(4, in.skip(4));
252561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(0, in.available());
253561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
254561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
255561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void testAvailableEmptySource() throws Exception {
256561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // this byte[] is a deflation of the empty file
257561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        byte[] deflated = { 120, -100, 3, 0, 0, 0, 0, 1 };
258561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        InputStream in = new InflaterInputStream(new ByteArrayInputStream(deflated));
259561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(-1, in.read());
260561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(-1, in.read());
261561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(0, in.available());
262561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
263561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
264561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	/**
265561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * @tests java.util.zip.InflaterInputStream#read(byte[], int, int)
266561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 */
267561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void test_read$BII() throws IOException{
268561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        byte[] test = new byte[507];
269561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 0; i < 256; i++) {
270561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            test[i] = (byte) i;
271561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
272561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 256; i < test.length; i++) {
273561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            test[i] = (byte) (256 - i);
274561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
275561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        ByteArrayOutputStream baos = new ByteArrayOutputStream();
276561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        DeflaterOutputStream dos = new DeflaterOutputStream(baos);
277561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        dos.write(test);
278561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        dos.close();
279561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        InputStream is = new ByteArrayInputStream(baos.toByteArray());
280561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        InflaterInputStream iis = new InflaterInputStream(is);
281561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        byte[] outBuf = new byte[530];
282561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        int result = 0;
283561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        while (true) {
284561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            result = iis.read(outBuf, 0, 5);
285561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            if (result == -1) {
286561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                //"EOF was reached";
287561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                break;
288561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
289561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
290561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
291561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iis.read(outBuf, -1, 10);
292561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IOOBE.");
293561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IndexOutOfBoundsException e) {
294561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // expected;
295561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
296561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
297561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
298561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_read$BII2() throws IOException {
299561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        File resources = Support_Resources.createTempFolder();
300561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Support_Resources.copyFile(resources, null, "Broken_manifest.jar");
301561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        FileInputStream fis = new FileInputStream(new File(resources,
302561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                "Broken_manifest.jar"));
303561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        InflaterInputStream iis = new InflaterInputStream(fis);
304561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        byte[] outBuf = new byte[530];
305561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
306561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iis.close();
307561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
308561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iis.read(outBuf, 0, 5);
309561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("IOException expected");
310561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IOException ee) {
311561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // expected.
312561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
313561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
314561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
315561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_read$BII3() throws IOException {
316561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        File resources = Support_Resources.createTempFolder();
317561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Support_Resources.copyFile(resources, null, "Broken_manifest.jar");
318561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        FileInputStream fis = new FileInputStream(new File(resources,
319561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                "Broken_manifest.jar"));
320561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        InflaterInputStream iis = new InflaterInputStream(fis);
321561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        byte[] outBuf = new byte[530];
322561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
323561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
324561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iis.read();
325561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("IOException expected.");
326561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IOException ee) {
327561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // expected
328561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
329561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
330561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
331561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
332561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.util.zip.InflaterInputStream#reset()
333561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
334561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_reset() {
335561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        InputStream is = new ByteArrayInputStream(new byte[10]);
336561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        InflaterInputStream iis = new InflaterInputStream(is);
337561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
338561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iis.reset();
339561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("Should throw IOException");
340561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IOException e) {
341561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // correct
342561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
343561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
344e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes
345561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	/**
346561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * @tests java.util.zip.InflaterInputStream#skip(long)
347561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 */
348561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void test_skipJ() throws IOException {
349561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		InputStream is = Support_Resources.getStream("hyts_available.tst");
350561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		InflaterInputStream iis = new InflaterInputStream(is);
351561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
352561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// Tests for skipping a negative number of bytes.
353561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		try {
354561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			iis.skip(-3);
355561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			fail("IllegalArgumentException not thrown");
356561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		} catch (IllegalArgumentException e) {
357561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
358561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
359561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("Incorrect Byte Returned.", 5, iis.read());
360561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
361561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		try {
362561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			iis.skip(Integer.MIN_VALUE);
363561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			fail("IllegalArgumentException not thrown");
364561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		} catch (IllegalArgumentException e) {
365561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
366561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
367561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("Incorrect Byte Returned.", 4, iis.read());
368561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
369561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// Test to make sure the correct number of bytes were skipped
370561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("Incorrect Number Of Bytes Skipped.", 3, iis.skip(3));
371561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
372561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// Test to see if the number of bytes skipped returned is true.
373561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("Incorrect Byte Returned.", 7, iis.read());
374561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
375561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("Incorrect Number Of Bytes Skipped.", 0, iis.skip(0));
376561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("Incorrect Byte Returned.", 0, iis.read());
377561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
378561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// Test for skipping more bytes than available in the stream
379561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("Incorrect Number Of Bytes Skipped.", 2, iis.skip(4));
380561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("Incorrect Byte Returned.", -1, iis.read());
381561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		iis.close();
382561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
383561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
384561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	/**
385561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * @tests java.util.zip.InflaterInputStream#skip(long)
386561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 */
387561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void test_skipJ2() throws IOException {
388561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		int result = 0;
389561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		int buffer[] = new int[100];
390561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		byte orgBuffer[] = { 1, 3, 4, 7, 8 };
391561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
392561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // testing for negative input to skip
393561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		InputStream infile = Support_Resources
394e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes				.getStream("hyts_construOD.bin");
395561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		Inflater inflate = new Inflater();
396561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		InflaterInputStream inflatIP = new InflaterInputStream(infile,
397561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				inflate, 10);
398561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		long skip;
399561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		try {
400561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			skip = inflatIP.skip(Integer.MIN_VALUE);
401561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			fail("Expected IllegalArgumentException when skip() is called with negative parameter");
402561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		} catch (IllegalArgumentException e) {
403561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
404561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
405561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		inflatIP.close();
406561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
407561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// testing for number of bytes greater than input.
408561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		InputStream infile2 = Support_Resources
409e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes				.getStream("hyts_construOD.bin");
410561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		InflaterInputStream inflatIP2 = new InflaterInputStream(infile2);
411561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
412561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// looked at how many bytes the skip skipped. It is
413561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// 5 and its supposed to be the entire input stream.
414561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
415561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		skip = inflatIP2.skip(Integer.MAX_VALUE);
416561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// System.out.println(skip);
417561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("method skip() returned wrong number of bytes skipped",
418561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				5, skip);
419561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
420561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// test for skipping of 2 bytes
421561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		InputStream infile3 = Support_Resources
422e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes				.getStream("hyts_construOD.bin");
423561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		InflaterInputStream inflatIP3 = new InflaterInputStream(infile3);
424561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		skip = inflatIP3.skip(2);
425561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("the number of bytes returned by skip did not correspond with its input parameters",
426561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				2, skip);
427561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		int i = 0;
428561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		result = 0;
429561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		while ((result = inflatIP3.read()) != -1) {
430561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			buffer[i] = result;
431561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			i++;
432561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
433561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		inflatIP2.close();
434561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
435561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		for (int j = 2; j < orgBuffer.length; j++) {
436561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			assertEquals(
437561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				"original compressed data did not equal decompressed data",
438561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				orgBuffer[j], buffer[j - 2]);
439561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
440561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
441561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
442561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	/**
443561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * @tests java.util.zip.InflaterInputStream#available()
444561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 */
445561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void test_available() throws IOException {
446561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		InputStream is = Support_Resources.getStream("hyts_available.tst");
447561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		InflaterInputStream iis = new InflaterInputStream(is);
448561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
449561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        int available;
450561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 0; i < 11; i++) {
451561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iis.read();
452561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            available = iis.available();
453561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            if (available == 0) {
454561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals("Expected no more bytes to read", -1, iis.read());
455561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            } else {
456561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals("Bytes Available Should Return 1.", 1, available);
457561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
458561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
459561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
460561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		iis.close();
461561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		try {
462561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			iis.available();
463561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			fail("available after close should throw IOException.");
464561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		} catch (IOException e) {
465561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
466561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
467561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
468561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
469561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	/**
470561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * @tests java.util.zip.InflaterInputStream#close()
471561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 */
472561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void test_close() throws IOException {
473561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		InflaterInputStream iin = new InflaterInputStream(
474561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				new ByteArrayInputStream(new byte[0]));
475561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		iin.close();
476561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
477561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // test for exception
478561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		iin.close();
479561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
480561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes}
481