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 Kamath 18d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamathpackage org.apache.harmony.tests.java.util.zip; 19d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 20d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamathimport java.io.ByteArrayInputStream; 21d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamathimport java.io.IOException; 22d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamathimport java.io.InputStream; 2314dade3dfbf9933fd179af0d5f1f87ae6f608418Narayan Kamathimport java.util.Arrays; 24d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamathimport java.util.zip.DataFormatException; 25d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamathimport java.util.zip.Deflater; 26d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamathimport java.util.zip.DeflaterInputStream; 2714dade3dfbf9933fd179af0d5f1f87ae6f608418Narayan Kamathimport libcore.io.Streams; 2827604018f783bf6354a13870b3e7785edca69b5fPaul Duffinimport libcore.junit.junit3.TestCaseWithRules; 2927604018f783bf6354a13870b3e7785edca69b5fPaul Duffinimport libcore.junit.util.ResourceLeakageDetector; 3027604018f783bf6354a13870b3e7785edca69b5fPaul Duffinimport libcore.junit.util.ResourceLeakageDetector.DisableResourceLeakageDetection; 3127604018f783bf6354a13870b3e7785edca69b5fPaul Duffinimport org.junit.Rule; 3227604018f783bf6354a13870b3e7785edca69b5fPaul Duffinimport org.junit.rules.TestRule; 33d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 3427604018f783bf6354a13870b3e7785edca69b5fPaul Duffinpublic class DeflaterInputStreamTest extends TestCaseWithRules { 3527604018f783bf6354a13870b3e7785edca69b5fPaul Duffin @Rule 3627604018f783bf6354a13870b3e7785edca69b5fPaul Duffin public TestRule guardRule = ResourceLeakageDetector.getRule(); 37d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 3814dade3dfbf9933fd179af0d5f1f87ae6f608418Narayan Kamath private static final String TEST_STR = "Hi,this is a test"; 39d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 4014dade3dfbf9933fd179af0d5f1f87ae6f608418Narayan Kamath private static final byte[] TEST_STRING_DEFLATED_BYTES = { 4114dade3dfbf9933fd179af0d5f1f87ae6f608418Narayan Kamath 120, -100, -13, -56, -44, 41, -55, -56, 44, 86, 4214dade3dfbf9933fd179af0d5f1f87ae6f608418Narayan Kamath 0, -94, 68, -123, -110, -44, -30, 18, 0, 52, 4314dade3dfbf9933fd179af0d5f1f87ae6f608418Narayan Kamath 34, 5, -13 }; 4414dade3dfbf9933fd179af0d5f1f87ae6f608418Narayan Kamath 4514dade3dfbf9933fd179af0d5f1f87ae6f608418Narayan Kamath private InputStream is; 4614dade3dfbf9933fd179af0d5f1f87ae6f608418Narayan Kamath 4714dade3dfbf9933fd179af0d5f1f87ae6f608418Narayan Kamath @Override 4814dade3dfbf9933fd179af0d5f1f87ae6f608418Narayan Kamath protected void setUp() throws Exception { 4914dade3dfbf9933fd179af0d5f1f87ae6f608418Narayan Kamath super.setUp(); 5014dade3dfbf9933fd179af0d5f1f87ae6f608418Narayan Kamath is = new ByteArrayInputStream(TEST_STR.getBytes("UTF-8")); 5114dade3dfbf9933fd179af0d5f1f87ae6f608418Narayan Kamath } 5214dade3dfbf9933fd179af0d5f1f87ae6f608418Narayan Kamath 5314dade3dfbf9933fd179af0d5f1f87ae6f608418Narayan Kamath @Override 5414dade3dfbf9933fd179af0d5f1f87ae6f608418Narayan Kamath protected void tearDown() throws Exception { 5514dade3dfbf9933fd179af0d5f1f87ae6f608418Narayan Kamath is.close(); 5614dade3dfbf9933fd179af0d5f1f87ae6f608418Narayan Kamath super.tearDown(); 5714dade3dfbf9933fd179af0d5f1f87ae6f608418Narayan Kamath } 58d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 59d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath /** 60d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath * DeflaterInputStream#available() 61d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath */ 62d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath public void testAvailable() throws IOException { 63d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath byte[] buf = new byte[1024]; 64d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath DeflaterInputStream dis = new DeflaterInputStream(is); 65d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath assertEquals(1, dis.available()); 66d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath assertEquals(120, dis.read()); 67d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath assertEquals(1, dis.available()); 68d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath assertEquals(22, dis.read(buf, 0, 1024)); 6914dade3dfbf9933fd179af0d5f1f87ae6f608418Narayan Kamath assertEquals(0, dis.available()); 70d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath assertEquals(-1, dis.read()); 71d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath assertEquals(0, dis.available()); 72d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath dis.close(); 73d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath try { 74d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath dis.available(); 75d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath fail("should throw IOException"); 76d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } catch (IOException e) { 77d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // expected 78d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 79d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 80d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 81d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath /** 82d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath * DeflaterInputStream#close() 83d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath */ 84d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath public void testClose() throws IOException { 85d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath byte[] buf = new byte[1024]; 86d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath DeflaterInputStream dis = new DeflaterInputStream(is); 87d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath assertEquals(1, dis.available()); 88d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath dis.close(); 89d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath try { 90d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath dis.available(); 91d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath fail("should throw IOException"); 92d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } catch (IOException e) { 93d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // expected 94d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 95d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath try { 96d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath dis.read(buf, 0, 1024); 97d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath fail("should throw IOException"); 98d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } catch (IOException e) { 99d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // expected 100d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 101d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // can close after close 102d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath dis.close(); 103d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 104d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 105d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath /** 106d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath * DeflaterInputStream#mark() 107d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath */ 108d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath public void testMark() throws IOException { 109d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // mark do nothing 110d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath DeflaterInputStream dis = new DeflaterInputStream(is); 111d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath dis.mark(-1); 112d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath dis.mark(0); 113d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath dis.mark(1); 114d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath dis.close(); 115d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath dis.mark(1); 116d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 117d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 118d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath /** 119d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath * DeflaterInputStream#markSupported() 120d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath */ 121d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath public void testMarkSupported() throws IOException { 122d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath DeflaterInputStream dis = new DeflaterInputStream(is); 123d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath assertFalse(dis.markSupported()); 124d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath dis.close(); 125d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath assertFalse(dis.markSupported()); 126d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 127d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 128d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath /** 129d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath * DeflaterInputStream#read() 130d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath */ 131d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath public void testRead() throws IOException { 132d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath DeflaterInputStream dis = new DeflaterInputStream(is); 133d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath assertEquals(1, dis.available()); 134d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath assertEquals(120, dis.read()); 135d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath assertEquals(1, dis.available()); 136d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath assertEquals(156, dis.read()); 137d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath assertEquals(1, dis.available()); 138d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath assertEquals(243, dis.read()); 139d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath assertEquals(1, dis.available()); 140d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath dis.close(); 141d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath try { 142d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath dis.read(); 143d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath fail("should throw IOException"); 144d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } catch (IOException e) { 145d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // expected 146d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 147d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 148d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 14914dade3dfbf9933fd179af0d5f1f87ae6f608418Narayan Kamath public void testRead_golden() throws Exception { 15027604018f783bf6354a13870b3e7785edca69b5fPaul Duffin try (DeflaterInputStream dis = new DeflaterInputStream(is)) { 15127604018f783bf6354a13870b3e7785edca69b5fPaul Duffin byte[] contents = Streams.readFully(dis); 15227604018f783bf6354a13870b3e7785edca69b5fPaul Duffin assertTrue(Arrays.equals(TEST_STRING_DEFLATED_BYTES, contents)); 15327604018f783bf6354a13870b3e7785edca69b5fPaul Duffin } 15414dade3dfbf9933fd179af0d5f1f87ae6f608418Narayan Kamath 15527604018f783bf6354a13870b3e7785edca69b5fPaul Duffin try (DeflaterInputStream dis = new DeflaterInputStream( 15627604018f783bf6354a13870b3e7785edca69b5fPaul Duffin new ByteArrayInputStream(TEST_STR.getBytes("UTF-8")))) { 15727604018f783bf6354a13870b3e7785edca69b5fPaul Duffin byte[] result = new byte[32]; 15827604018f783bf6354a13870b3e7785edca69b5fPaul Duffin int count = 0; 15927604018f783bf6354a13870b3e7785edca69b5fPaul Duffin int bytesRead; 16027604018f783bf6354a13870b3e7785edca69b5fPaul Duffin while ((bytesRead = dis.read(result, count, 4)) != -1) { 16127604018f783bf6354a13870b3e7785edca69b5fPaul Duffin count += bytesRead; 16227604018f783bf6354a13870b3e7785edca69b5fPaul Duffin } 16327604018f783bf6354a13870b3e7785edca69b5fPaul Duffin assertEquals(23, count); 16427604018f783bf6354a13870b3e7785edca69b5fPaul Duffin byte[] splicedResult = new byte[23]; 16527604018f783bf6354a13870b3e7785edca69b5fPaul Duffin System.arraycopy(result, 0, splicedResult, 0, 23); 16627604018f783bf6354a13870b3e7785edca69b5fPaul Duffin assertTrue(Arrays.equals(TEST_STRING_DEFLATED_BYTES, splicedResult)); 16714dade3dfbf9933fd179af0d5f1f87ae6f608418Narayan Kamath } 16814dade3dfbf9933fd179af0d5f1f87ae6f608418Narayan Kamath } 16914dade3dfbf9933fd179af0d5f1f87ae6f608418Narayan Kamath 17014dade3dfbf9933fd179af0d5f1f87ae6f608418Narayan Kamath public void testRead_leavesBufUnmodified() throws Exception { 17114dade3dfbf9933fd179af0d5f1f87ae6f608418Narayan Kamath DeflaterInputStreamWithPublicBuffer dis = new DeflaterInputStreamWithPublicBuffer(is); 17214dade3dfbf9933fd179af0d5f1f87ae6f608418Narayan Kamath byte[] contents = Streams.readFully(dis); 17314dade3dfbf9933fd179af0d5f1f87ae6f608418Narayan Kamath assertTrue(Arrays.equals(TEST_STRING_DEFLATED_BYTES, contents)); 17414dade3dfbf9933fd179af0d5f1f87ae6f608418Narayan Kamath 17514dade3dfbf9933fd179af0d5f1f87ae6f608418Narayan Kamath // protected field buf is a part of the public API of this class. 17614dade3dfbf9933fd179af0d5f1f87ae6f608418Narayan Kamath // we guarantee that it's only used as an input buffer, and not for 17714dade3dfbf9933fd179af0d5f1f87ae6f608418Narayan Kamath // anything else. 17814dade3dfbf9933fd179af0d5f1f87ae6f608418Narayan Kamath byte[] buf = dis.getBuffer(); 17914dade3dfbf9933fd179af0d5f1f87ae6f608418Narayan Kamath byte[] expected = TEST_STR.getBytes("UTF-8"); 18014dade3dfbf9933fd179af0d5f1f87ae6f608418Narayan Kamath 18114dade3dfbf9933fd179af0d5f1f87ae6f608418Narayan Kamath byte[] splicedBuf = new byte[expected.length]; 182ab646c8866f5bf4bfaeb811c7dce434e130eb44eNarayan Kamath System.arraycopy(buf, 0, splicedBuf, 0, splicedBuf.length); 183ab646c8866f5bf4bfaeb811c7dce434e130eb44eNarayan Kamath assertTrue(Arrays.equals(expected, splicedBuf)); 18414dade3dfbf9933fd179af0d5f1f87ae6f608418Narayan Kamath } 18514dade3dfbf9933fd179af0d5f1f87ae6f608418Narayan Kamath 186d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath /** 187d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath * DeflaterInputStream#read(byte[], int, int) 188d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath */ 189d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath public void testReadByteArrayIntInt() throws IOException { 190d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath byte[] buf1 = new byte[256]; 191d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath byte[] buf2 = new byte[256]; 19227604018f783bf6354a13870b3e7785edca69b5fPaul Duffin try (DeflaterInputStream dis = new DeflaterInputStream(is)) { 19327604018f783bf6354a13870b3e7785edca69b5fPaul Duffin assertEquals(23, dis.read(buf1, 0, 256)); 19427604018f783bf6354a13870b3e7785edca69b5fPaul Duffin } 19527604018f783bf6354a13870b3e7785edca69b5fPaul Duffin 19627604018f783bf6354a13870b3e7785edca69b5fPaul Duffin try (DeflaterInputStream dis = new DeflaterInputStream(is)) { 19727604018f783bf6354a13870b3e7785edca69b5fPaul Duffin assertEquals(8, dis.read(buf2, 0, 256)); 19827604018f783bf6354a13870b3e7785edca69b5fPaul Duffin } 19927604018f783bf6354a13870b3e7785edca69b5fPaul Duffin 20014dade3dfbf9933fd179af0d5f1f87ae6f608418Narayan Kamath is = new ByteArrayInputStream(TEST_STR.getBytes("UTF-8")); 20127604018f783bf6354a13870b3e7785edca69b5fPaul Duffin DeflaterInputStream dis = new DeflaterInputStream(is); 202d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath assertEquals(1, dis.available()); 203d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath assertEquals(120, dis.read()); 204d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath assertEquals(1, dis.available()); 205d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath assertEquals(22, dis.read(buf2, 0, 256)); 20614dade3dfbf9933fd179af0d5f1f87ae6f608418Narayan Kamath assertEquals(0, dis.available()); 207d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath assertEquals(-1, dis.read()); 208d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath assertEquals(0, dis.available()); 209d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath try { 210d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath dis.read(buf1, 0, 512); 211d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath fail("should throw IndexOutOfBoundsException"); 212d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } catch (IndexOutOfBoundsException e) { 213d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // expected 214d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 215d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath try { 216d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath dis.read(null, 0, 0); 217d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath fail("should throw NullPointerException"); 218d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } catch (NullPointerException e) { 219d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // expected 220d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 221d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath try { 222d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath dis.read(null, -1, 0); 223d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath fail("should throw NullPointerException"); 224d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } catch (NullPointerException e) { 225d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // expected 226d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 227d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath try { 228d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath dis.read(null, -1, -1); 229d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath fail("should throw NullPointerException"); 230d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } catch (NullPointerException e) { 231d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // expected 232d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 233d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath try { 234d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath dis.read(buf1, -1, -1); 235d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath fail("should throw IndexOutOfBoundsException"); 236d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } catch (IndexOutOfBoundsException e) { 237d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // expected 238d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 239d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath try { 240d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath dis.read(buf1, 0, -1); 241d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath fail("should throw IndexOutOfBoundsException"); 242d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } catch (IndexOutOfBoundsException e) { 243d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // expected 244d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 245d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath dis.close(); 246d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath try { 247d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath dis.read(buf1, 0, 512); 248d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath fail("should throw IOException"); 249d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } catch (IOException e) { 250d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // expected 251d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 252d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath try { 253d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath dis.read(buf1, 0, 1); 254d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath fail("should throw IOException"); 255d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } catch (IOException e) { 256d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // expected 257d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 258d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath try { 259d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath dis.read(null, 0, 0); 260d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath fail("should throw IOException"); 261d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } catch (IOException e) { 262d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // expected 263d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 264d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath try { 265d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath dis.read(null, -1, 0); 266d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath fail("should throw IOException"); 267d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } catch (IOException e) { 268d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // expected 269d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 270d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath try { 271d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath dis.read(null, -1, -1); 272d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath fail("should throw IOException"); 273d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } catch (IOException e) { 274d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // expected 275d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 276d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath try { 277d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath dis.read(buf1, -1, -1); 278d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath fail("should throw IOException"); 279d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } catch (IOException e) { 280d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // expected 281d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 282d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath try { 283d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath dis.read(buf1, 0, -1); 284d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath fail("should throw IOException"); 285d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } catch (IOException e) { 286d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // expected 287d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 288d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 289d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 290d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath /** 291d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath * DeflaterInputStream#reset() 292d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath */ 293d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath public void testReset() throws IOException { 294d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath DeflaterInputStream dis = new DeflaterInputStream(is); 295d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath try { 296d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath dis.reset(); 297d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath fail("should throw IOException"); 298d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } catch (IOException e) { 299d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // expected 300d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 301d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath dis.close(); 302d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath try { 303d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath dis.reset(); 304d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath fail("should throw IOException"); 305d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } catch (IOException e) { 306d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // expected 307d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 308d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 309d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 310d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath /** 311d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath * DeflaterInputStream#skip() 312d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath */ 313d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath public void testSkip() throws IOException { 314d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath byte[] buf = new byte[1024]; 31527604018f783bf6354a13870b3e7785edca69b5fPaul Duffin try (DeflaterInputStream dis = new DeflaterInputStream(is)) { 31627604018f783bf6354a13870b3e7785edca69b5fPaul Duffin assertEquals(1, dis.available()); 31727604018f783bf6354a13870b3e7785edca69b5fPaul Duffin dis.skip(1); 31827604018f783bf6354a13870b3e7785edca69b5fPaul Duffin assertEquals(1, dis.available()); 31927604018f783bf6354a13870b3e7785edca69b5fPaul Duffin assertEquals(22, dis.read(buf, 0, 1024)); 32027604018f783bf6354a13870b3e7785edca69b5fPaul Duffin assertEquals(0, dis.available()); 32127604018f783bf6354a13870b3e7785edca69b5fPaul Duffin assertEquals(0, dis.available()); 32227604018f783bf6354a13870b3e7785edca69b5fPaul Duffin is = new ByteArrayInputStream(TEST_STR.getBytes("UTF-8")); 32327604018f783bf6354a13870b3e7785edca69b5fPaul Duffin } 32427604018f783bf6354a13870b3e7785edca69b5fPaul Duffin 32514dade3dfbf9933fd179af0d5f1f87ae6f608418Narayan Kamath is = new ByteArrayInputStream(TEST_STR.getBytes("UTF-8")); 32627604018f783bf6354a13870b3e7785edca69b5fPaul Duffin try (DeflaterInputStream dis = new DeflaterInputStream(is)) { 32727604018f783bf6354a13870b3e7785edca69b5fPaul Duffin assertEquals(23, dis.skip(Long.MAX_VALUE)); 32827604018f783bf6354a13870b3e7785edca69b5fPaul Duffin assertEquals(0, dis.available()); 32927604018f783bf6354a13870b3e7785edca69b5fPaul Duffin } 33027604018f783bf6354a13870b3e7785edca69b5fPaul Duffin 33127604018f783bf6354a13870b3e7785edca69b5fPaul Duffin DeflaterInputStream dis = new DeflaterInputStream(is); 332d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath assertEquals(1, dis.available()); 333d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath dis.skip(56); 334d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath assertEquals(0, dis.available()); 335d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath assertEquals(-1, dis.read(buf, 0, 1024)); 33614dade3dfbf9933fd179af0d5f1f87ae6f608418Narayan Kamath 337d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath assertEquals(0, dis.available()); 338d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // can still skip 339d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath dis.skip(1); 340d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath dis.close(); 341d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath try { 342d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath dis.skip(1); 343d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath fail("should throw IOException"); 344d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } catch (IOException e) { 345d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // expected 346d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 347d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 348d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 349d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath /** 350d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath * DeflaterInputStream#DeflaterInputStream(InputStream) 351d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath */ 35227604018f783bf6354a13870b3e7785edca69b5fPaul Duffin @DisableResourceLeakageDetection( 35327604018f783bf6354a13870b3e7785edca69b5fPaul Duffin why = "DeflaterInputStream does not clean up the default Deflater created in the" 35427604018f783bf6354a13870b3e7785edca69b5fPaul Duffin + " constructor if the constructor fails; i.e. constructor calls" 35527604018f783bf6354a13870b3e7785edca69b5fPaul Duffin + " this(..., new Deflater(), ...) and that constructor fails but does not know" 35627604018f783bf6354a13870b3e7785edca69b5fPaul Duffin + " that it needs to call Deflater.end() as the caller has no access to it", 35727604018f783bf6354a13870b3e7785edca69b5fPaul Duffin bug = "31798154") 35827604018f783bf6354a13870b3e7785edca69b5fPaul Duffin public void testDeflaterInputStreamInputStream() throws IOException { 359d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // ok 36027604018f783bf6354a13870b3e7785edca69b5fPaul Duffin new DeflaterInputStream(is).close(); 361d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // fail 362d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath try { 363d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath new DeflaterInputStream(null); 364d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath fail("should throw NullPointerException"); 365d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } catch (NullPointerException e) { 366d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // expected 367d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 368d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 369d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 370d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath /** 371d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath * DataFormatException#DataFormatException() 372d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath */ 373d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath public void testDataFormatException() { 374d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath new DataFormatException(); 375d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 376d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 377d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath /** 378d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath * DeflaterInputStream#DeflaterInputStream(InputStream, Deflater) 379d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath */ 38027604018f783bf6354a13870b3e7785edca69b5fPaul Duffin public void testDeflaterInputStreamInputStreamDeflater() throws IOException { 381d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // ok 38227604018f783bf6354a13870b3e7785edca69b5fPaul Duffin Deflater deflater = new Deflater(); 383d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath try { 38427604018f783bf6354a13870b3e7785edca69b5fPaul Duffin new DeflaterInputStream(is, deflater).close(); 38527604018f783bf6354a13870b3e7785edca69b5fPaul Duffin // fail 38627604018f783bf6354a13870b3e7785edca69b5fPaul Duffin try { 38727604018f783bf6354a13870b3e7785edca69b5fPaul Duffin new DeflaterInputStream(is, null); 38827604018f783bf6354a13870b3e7785edca69b5fPaul Duffin fail("should throw NullPointerException"); 38927604018f783bf6354a13870b3e7785edca69b5fPaul Duffin } catch (NullPointerException e) { 39027604018f783bf6354a13870b3e7785edca69b5fPaul Duffin // expected 39127604018f783bf6354a13870b3e7785edca69b5fPaul Duffin } 39227604018f783bf6354a13870b3e7785edca69b5fPaul Duffin try { 39327604018f783bf6354a13870b3e7785edca69b5fPaul Duffin new DeflaterInputStream(null, deflater); 39427604018f783bf6354a13870b3e7785edca69b5fPaul Duffin fail("should throw NullPointerException"); 39527604018f783bf6354a13870b3e7785edca69b5fPaul Duffin } catch (NullPointerException e) { 39627604018f783bf6354a13870b3e7785edca69b5fPaul Duffin // expected 39727604018f783bf6354a13870b3e7785edca69b5fPaul Duffin } 39827604018f783bf6354a13870b3e7785edca69b5fPaul Duffin } finally { 39927604018f783bf6354a13870b3e7785edca69b5fPaul Duffin deflater.end(); 400d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 401d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 402d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 403d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath /** 404d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath * DeflaterInputStream#DeflaterInputStream(InputStream, Deflater, int) 405d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath */ 406d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath public void testDeflaterInputStreamInputStreamDeflaterInt() { 407d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // ok 40827604018f783bf6354a13870b3e7785edca69b5fPaul Duffin Deflater deflater = new Deflater(); 409d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath try { 41027604018f783bf6354a13870b3e7785edca69b5fPaul Duffin new DeflaterInputStream(is, deflater, 1024); 41127604018f783bf6354a13870b3e7785edca69b5fPaul Duffin // fail 41227604018f783bf6354a13870b3e7785edca69b5fPaul Duffin try { 41327604018f783bf6354a13870b3e7785edca69b5fPaul Duffin new DeflaterInputStream(is, null, 1024); 41427604018f783bf6354a13870b3e7785edca69b5fPaul Duffin fail("should throw NullPointerException"); 41527604018f783bf6354a13870b3e7785edca69b5fPaul Duffin } catch (NullPointerException e) { 41627604018f783bf6354a13870b3e7785edca69b5fPaul Duffin // expected 41727604018f783bf6354a13870b3e7785edca69b5fPaul Duffin } 41827604018f783bf6354a13870b3e7785edca69b5fPaul Duffin try { 41927604018f783bf6354a13870b3e7785edca69b5fPaul Duffin new DeflaterInputStream(null, deflater, 1024); 42027604018f783bf6354a13870b3e7785edca69b5fPaul Duffin fail("should throw NullPointerException"); 42127604018f783bf6354a13870b3e7785edca69b5fPaul Duffin } catch (NullPointerException e) { 42227604018f783bf6354a13870b3e7785edca69b5fPaul Duffin // expected 42327604018f783bf6354a13870b3e7785edca69b5fPaul Duffin } 42427604018f783bf6354a13870b3e7785edca69b5fPaul Duffin try { 42527604018f783bf6354a13870b3e7785edca69b5fPaul Duffin new DeflaterInputStream(is, deflater, -1); 42627604018f783bf6354a13870b3e7785edca69b5fPaul Duffin fail("should throw IllegalArgumentException"); 42727604018f783bf6354a13870b3e7785edca69b5fPaul Duffin } catch (IllegalArgumentException e) { 42827604018f783bf6354a13870b3e7785edca69b5fPaul Duffin // expected 42927604018f783bf6354a13870b3e7785edca69b5fPaul Duffin } 43027604018f783bf6354a13870b3e7785edca69b5fPaul Duffin try { 43127604018f783bf6354a13870b3e7785edca69b5fPaul Duffin new DeflaterInputStream(null, deflater, -1); 43227604018f783bf6354a13870b3e7785edca69b5fPaul Duffin fail("should throw NullPointerException"); 43327604018f783bf6354a13870b3e7785edca69b5fPaul Duffin } catch (NullPointerException e) { 43427604018f783bf6354a13870b3e7785edca69b5fPaul Duffin // expected 43527604018f783bf6354a13870b3e7785edca69b5fPaul Duffin } 43627604018f783bf6354a13870b3e7785edca69b5fPaul Duffin try { 43727604018f783bf6354a13870b3e7785edca69b5fPaul Duffin new DeflaterInputStream(is, null, -1); 43827604018f783bf6354a13870b3e7785edca69b5fPaul Duffin fail("should throw NullPointerException"); 43927604018f783bf6354a13870b3e7785edca69b5fPaul Duffin } catch (NullPointerException e) { 44027604018f783bf6354a13870b3e7785edca69b5fPaul Duffin // expected 44127604018f783bf6354a13870b3e7785edca69b5fPaul Duffin } 44227604018f783bf6354a13870b3e7785edca69b5fPaul Duffin } finally { 44327604018f783bf6354a13870b3e7785edca69b5fPaul Duffin deflater.end(); 444d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 445d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 446d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 44714dade3dfbf9933fd179af0d5f1f87ae6f608418Narayan Kamath public static final class DeflaterInputStreamWithPublicBuffer extends DeflaterInputStream { 448d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 44914dade3dfbf9933fd179af0d5f1f87ae6f608418Narayan Kamath public DeflaterInputStreamWithPublicBuffer(InputStream in) { 45014dade3dfbf9933fd179af0d5f1f87ae6f608418Narayan Kamath super(in); 45114dade3dfbf9933fd179af0d5f1f87ae6f608418Narayan Kamath } 45214dade3dfbf9933fd179af0d5f1f87ae6f608418Narayan Kamath 45314dade3dfbf9933fd179af0d5f1f87ae6f608418Narayan Kamath public byte[] getBuffer() { 45414dade3dfbf9933fd179af0d5f1f87ae6f608418Narayan Kamath return buf; 45514dade3dfbf9933fd179af0d5f1f87ae6f608418Narayan Kamath } 456d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 457d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath} 458