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.EOFException; 21d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamathimport java.io.File; 22d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamathimport java.io.FileInputStream; 23d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamathimport java.io.FileOutputStream; 24d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamathimport java.io.IOException; 25d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamathimport java.io.OutputStream; 26d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamathimport java.util.zip.Deflater; 27d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamathimport java.util.zip.DeflaterOutputStream; 28d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamathimport java.util.zip.InflaterInputStream; 2927604018f783bf6354a13870b3e7785edca69b5fPaul Duffinimport libcore.junit.junit3.TestCaseWithRules; 3027604018f783bf6354a13870b3e7785edca69b5fPaul Duffinimport libcore.junit.util.ResourceLeakageDetector; 3127604018f783bf6354a13870b3e7785edca69b5fPaul Duffinimport libcore.junit.util.ResourceLeakageDetector.DisableResourceLeakageDetection; 3227604018f783bf6354a13870b3e7785edca69b5fPaul Duffinimport org.junit.Rule; 3327604018f783bf6354a13870b3e7785edca69b5fPaul Duffinimport org.junit.rules.TestRule; 34d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 3527604018f783bf6354a13870b3e7785edca69b5fPaul Duffinpublic class DeflaterOutputStreamTest extends TestCaseWithRules { 3627604018f783bf6354a13870b3e7785edca69b5fPaul Duffin @Rule 3727604018f783bf6354a13870b3e7785edca69b5fPaul Duffin public TestRule guardRule = ResourceLeakageDetector.getRule(); 38d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 39d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath private class MyDeflaterOutputStream extends DeflaterOutputStream { 40d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath boolean deflateFlag = false; 41d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 42d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath MyDeflaterOutputStream(OutputStream out) { 43d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath super(out); 44d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 45d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 46d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath MyDeflaterOutputStream(OutputStream out, Deflater defl) { 47d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath super(out, defl); 48d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 49d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 50d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath MyDeflaterOutputStream(OutputStream out, Deflater defl, int size) { 51d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath super(out, defl, size); 52d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 53d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 54d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath byte[] getProtectedBuf() { 55d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath return buf; 56d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 57d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 58d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath protected void deflate() throws IOException { 59d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath deflateFlag = true; 60d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath super.deflate(); 61d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 62d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 63d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath boolean getDaflateFlag() { 64d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath return deflateFlag; 65d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 66d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 67d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 68e10c61bb13373b95ba857cc3af60f94b9941ab9eNarayan Kamath private final byte outputBuf[] = new byte[500]; 69d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 70d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath @Override 71d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath protected void setUp() { 72d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // setting up a deflater to be used 73d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath byte byteArray[] = { 1, 3, 4, 7, 8 }; 74d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath int x = 0; 75d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath Deflater deflate = new Deflater(1); 76d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath deflate.setInput(byteArray); 77d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath while (!(deflate.needsInput())) { 78e10c61bb13373b95ba857cc3af60f94b9941ab9eNarayan Kamath x += deflate.deflate(outputBuf, x, outputBuf.length - x); 79d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 80d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath deflate.finish(); 81d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath while (!(deflate.finished())) { 82e10c61bb13373b95ba857cc3af60f94b9941ab9eNarayan Kamath x = x + deflate.deflate(outputBuf, x, outputBuf.length - x); 83d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 84d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath deflate.end(); 85d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 86d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 87d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath /** 88d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath * java.util.zip.DeflaterOutputStream#DeflaterOutputStream(java.io.OutputStream, 89d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath *java.util.zip.Deflater) 90d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath */ 91d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath public void test_ConstructorLjava_io_OutputStreamLjava_util_zip_Deflater() throws Exception { 92d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath byte byteArray[] = { 1, 3, 4, 7, 8 }; 93e10c61bb13373b95ba857cc3af60f94b9941ab9eNarayan Kamath File f1 = File.createTempFile("hyts_ConstruOD", ".tst"); 94d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath FileOutputStream fos = new FileOutputStream(f1); 95d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath Deflater defl = null; 96d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath MyDeflaterOutputStream dos; 97d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // Test for a null Deflater. 98d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath try { 99d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath dos = new MyDeflaterOutputStream(fos, defl); 100d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath fail("NullPointerException Not Thrown"); 101d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } catch (NullPointerException e) { 102d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 103d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath defl = new Deflater(); 104d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath dos = new MyDeflaterOutputStream(fos, defl); 105d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 106d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // Test to see if DeflaterOutputStream was created with the correct 107d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // buffer. 108d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath assertEquals("Incorrect Buffer Size", 512, dos.getProtectedBuf().length); 109d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 110d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath dos.write(byteArray); 111d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath dos.close(); 112d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath f1.delete(); 11327604018f783bf6354a13870b3e7785edca69b5fPaul Duffin defl.end(); 114d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 115d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 116d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath /** 117d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath * java.util.zip.DeflaterOutputStream#DeflaterOutputStream(java.io.OutputStream) 118d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath */ 119d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath public void test_ConstructorLjava_io_OutputStream() throws Exception { 120e10c61bb13373b95ba857cc3af60f94b9941ab9eNarayan Kamath File f1 = File.createTempFile("hyts_ConstruO", ".tst"); 121d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath FileOutputStream fos = new FileOutputStream(f1); 122d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath MyDeflaterOutputStream dos = new MyDeflaterOutputStream(fos); 123d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 124d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // Test to see if DeflaterOutputStream was created with the correct 125d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // buffer. 126d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath assertEquals("Incorrect Buffer Size", 512, dos.getProtectedBuf().length); 127d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 128e10c61bb13373b95ba857cc3af60f94b9941ab9eNarayan Kamath dos.write(outputBuf); 129d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath dos.close(); 130d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath f1.delete(); 131d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 132d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 133d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath /** 134d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath * java.util.zip.DeflaterOutputStream#DeflaterOutputStream(java.io.OutputStream, 135d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath *java.util.zip.Deflater, int) 136d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath */ 137d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath public void test_ConstructorLjava_io_OutputStreamLjava_util_zip_DeflaterI() 138d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath throws Exception { 139d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath int buf = 5; 140d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath int negBuf = -5; 141d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath int zeroBuf = 0; 142d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath byte byteArray[] = { 1, 3, 4, 7, 8, 3, 6 }; 143e10c61bb13373b95ba857cc3af60f94b9941ab9eNarayan Kamath File f1 = File.createTempFile("hyts_ConstruODI", ".tst"); 144d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath FileOutputStream fos = new FileOutputStream(f1); 145d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath Deflater defl = null; 146d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath MyDeflaterOutputStream dos; 147d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 148d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // Test for a null Deflater. 149d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath try { 150d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath dos = new MyDeflaterOutputStream(fos, defl, buf); 151d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath fail("NullPointerException Not Thrown"); 152d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } catch (NullPointerException e) { 153d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 154d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath defl = new Deflater(); 155d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 156d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // Test for a negative buf. 157d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath try { 158d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath dos = new MyDeflaterOutputStream(fos, defl, negBuf); 159d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath fail("IllegalArgumentException Not Thrown"); 160d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } catch (IllegalArgumentException e) { 161d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 162d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 163d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // Test for a zero buf. 164d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath try { 165d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath dos = new MyDeflaterOutputStream(fos, defl, zeroBuf); 166d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath fail("IllegalArgumentException Not Thrown"); 167d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } catch (IllegalArgumentException e) { 168d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 169d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 170d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // Test to see if DeflaterOutputStream was created with the correct 171d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // buffer. 172d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath dos = new MyDeflaterOutputStream(fos, defl, buf); 173d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath assertEquals("Incorrect Buffer Size", 5, dos.getProtectedBuf().length); 174d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 175d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath dos.write(byteArray); 176d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath dos.close(); 177d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath f1.delete(); 17827604018f783bf6354a13870b3e7785edca69b5fPaul Duffin defl.end(); 179d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 180d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 181d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath /** 182d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath * java.util.zip.DeflaterOutputStream#close() 183d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath */ 18427604018f783bf6354a13870b3e7785edca69b5fPaul Duffin @DisableResourceLeakageDetection( 18527604018f783bf6354a13870b3e7785edca69b5fPaul Duffin why = "DeflaterOutputStream.close() does not work properly if finish() throws an" 18627604018f783bf6354a13870b3e7785edca69b5fPaul Duffin + " exception; DeflaterOutputStream.finish() throws an exception if the" 18727604018f783bf6354a13870b3e7785edca69b5fPaul Duffin + " underlying OutputStream has been closed and the Deflater still has data to" 18827604018f783bf6354a13870b3e7785edca69b5fPaul Duffin + " write.", 18927604018f783bf6354a13870b3e7785edca69b5fPaul Duffin bug = "31797037") 190d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath public void test_close() throws Exception { 191d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath File f1 = File.createTempFile("close", ".tst"); 192d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 19327604018f783bf6354a13870b3e7785edca69b5fPaul Duffin try (InflaterInputStream iis = new InflaterInputStream(new FileInputStream(f1))) { 19427604018f783bf6354a13870b3e7785edca69b5fPaul Duffin try { 19527604018f783bf6354a13870b3e7785edca69b5fPaul Duffin iis.read(); 19627604018f783bf6354a13870b3e7785edca69b5fPaul Duffin fail("EOFException Not Thrown"); 19727604018f783bf6354a13870b3e7785edca69b5fPaul Duffin } catch (EOFException e) { 19827604018f783bf6354a13870b3e7785edca69b5fPaul Duffin } 199d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 200d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 201d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath FileOutputStream fos = new FileOutputStream(f1); 202d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath DeflaterOutputStream dos = new DeflaterOutputStream(fos); 203d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath byte byteArray[] = { 1, 3, 4, 6 }; 204d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath dos.write(byteArray); 205d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath dos.close(); 206d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 20727604018f783bf6354a13870b3e7785edca69b5fPaul Duffin try (InflaterInputStream iis = new InflaterInputStream(new FileInputStream(f1))) { 20827604018f783bf6354a13870b3e7785edca69b5fPaul Duffin // Test to see if the finish method wrote the bytes to the file. 20927604018f783bf6354a13870b3e7785edca69b5fPaul Duffin assertEquals("Incorrect Byte Returned.", 1, iis.read()); 21027604018f783bf6354a13870b3e7785edca69b5fPaul Duffin assertEquals("Incorrect Byte Returned.", 3, iis.read()); 21127604018f783bf6354a13870b3e7785edca69b5fPaul Duffin assertEquals("Incorrect Byte Returned.", 4, iis.read()); 21227604018f783bf6354a13870b3e7785edca69b5fPaul Duffin assertEquals("Incorrect Byte Returned.", 6, iis.read()); 21327604018f783bf6354a13870b3e7785edca69b5fPaul Duffin assertEquals("Incorrect Byte Returned.", -1, iis.read()); 21427604018f783bf6354a13870b3e7785edca69b5fPaul Duffin assertEquals("Incorrect Byte Returned.", -1, iis.read()); 21527604018f783bf6354a13870b3e7785edca69b5fPaul Duffin } 216d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 217d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // Not sure if this test will stay. 218d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath FileOutputStream fos2 = new FileOutputStream(f1); 219d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath DeflaterOutputStream dos2 = new DeflaterOutputStream(fos2); 220d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath fos2.close(); 221d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath try { 222d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath dos2.close(); 223d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath fail("IOException not thrown"); 224d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } catch (IOException e) { 225d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 226d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 227d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // Test to write to a closed DeflaterOutputStream 228d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath try { 229d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath dos.write(5); 230d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath fail("DeflaterOutputStream Able To Write After Being Closed."); 231d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } catch (IOException e) { 232d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 233d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 234d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // Test to write to a FileOutputStream that should have been closed 235d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // by 236d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // the DeflaterOutputStream. 237d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath try { 238d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath fos.write(("testing").getBytes()); 239d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath fail("FileOutputStream Able To Write After Being Closed."); 240d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } catch (IOException e) { 241d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 242d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 243d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath f1.delete(); 244d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 245d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 246d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath /** 247d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath * java.util.zip.DeflaterOutputStream#finish() 248d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath */ 249d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath public void test_finish() throws Exception { 250d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // Need test to see if method finish() actually finishes 251d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // Only testing possible errors, not if it actually works 252d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 253e10c61bb13373b95ba857cc3af60f94b9941ab9eNarayan Kamath File f1 = File.createTempFile("finish", ".tst"); 254d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath FileOutputStream fos1 = new FileOutputStream(f1); 255d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath DeflaterOutputStream dos = new DeflaterOutputStream(fos1); 256d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath byte byteArray[] = { 1, 3, 4, 6 }; 257d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath dos.write(byteArray); 258d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath dos.finish(); 259d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 260d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // Test to see if the same FileOutputStream can be used with the 261d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // DeflaterOutputStream after finish is called. 262d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath try { 263d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath dos.write(1); 264d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath fail("IOException not thrown"); 265d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } catch (IOException e) { 266d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 267d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 268d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // Test for writing with a new FileOutputStream using the same 269d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // DeflaterOutputStream. 270d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath FileOutputStream fos2 = new FileOutputStream(f1); 27127604018f783bf6354a13870b3e7785edca69b5fPaul Duffin DeflaterOutputStream dos4 = new DeflaterOutputStream(fos2); 27227604018f783bf6354a13870b3e7785edca69b5fPaul Duffin dos4.write(1); 273d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 274d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // Test for writing to FileOutputStream fos1, which should be open. 275d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath fos1.write(("testing").getBytes()); 276d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 277d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // Test for writing to FileOutputStream fos2, which should be open. 278d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath fos2.write(("testing").getBytes()); 279d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 280d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // Not sure if this test will stay. 281d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath FileOutputStream fos3 = new FileOutputStream(f1); 282d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath DeflaterOutputStream dos3 = new DeflaterOutputStream(fos3); 283d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath fos3.close(); 284d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath try { 285d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath dos3.finish(); 286d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath fail("IOException not thrown"); 287d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } catch (IOException e) { 288d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 28927604018f783bf6354a13870b3e7785edca69b5fPaul Duffin dos3.close(); 290d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 291d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath dos.close(); 29227604018f783bf6354a13870b3e7785edca69b5fPaul Duffin dos4.close(); 293d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath f1.delete(); 294d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 295d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 296d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath /** 297d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath * java.util.zip.DeflaterOutputStream#write(int) 298d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath */ 29927604018f783bf6354a13870b3e7785edca69b5fPaul Duffin @DisableResourceLeakageDetection( 30027604018f783bf6354a13870b3e7785edca69b5fPaul Duffin why = "DeflaterOutputStream.close() does not work properly if finish() throws an" 30127604018f783bf6354a13870b3e7785edca69b5fPaul Duffin + " exception; DeflaterOutputStream.finish() throws an exception if the" 30227604018f783bf6354a13870b3e7785edca69b5fPaul Duffin + " underlying OutputStream has been closed and the Deflater still has data to" 30327604018f783bf6354a13870b3e7785edca69b5fPaul Duffin + " write.", 30427604018f783bf6354a13870b3e7785edca69b5fPaul Duffin bug = "31797037") 305d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath public void test_writeI() throws Exception { 306e10c61bb13373b95ba857cc3af60f94b9941ab9eNarayan Kamath File f1 = File.createTempFile("writeIL", ".tst"); 307d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath FileOutputStream fos = new FileOutputStream(f1); 308d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath DeflaterOutputStream dos = new DeflaterOutputStream(fos); 309d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath for (int i = 0; i < 3; i++) { 310d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath dos.write(i); 311d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 312d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath dos.close(); 313d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath FileInputStream fis = new FileInputStream(f1); 314d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath InflaterInputStream iis = new InflaterInputStream(fis); 315d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath for (int i = 0; i < 3; i++) { 316d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath assertEquals("Incorrect Byte Returned.", i, iis.read()); 317d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 318d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath assertEquals("Incorrect Byte Returned (EOF).", -1, iis.read()); 319d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath assertEquals("Incorrect Byte Returned (EOF).", -1, iis.read()); 320d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath iis.close(); 321d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 322d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // Not sure if this test is that important. 323d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // Checks to see if you can write using the DeflaterOutputStream 324d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // after 325d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // the FileOutputStream has been closed. 326d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath FileOutputStream fos2 = new FileOutputStream(f1); 327d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath DeflaterOutputStream dos2 = new DeflaterOutputStream(fos2); 328d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath fos2.close(); 329d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath try { 330d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath dos2.write(2); 331d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath fail("IOException not thrown"); 332d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } catch (IOException e) { 333d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 33427604018f783bf6354a13870b3e7785edca69b5fPaul Duffin // Close to try and free up the resources. 33527604018f783bf6354a13870b3e7785edca69b5fPaul Duffin try { 33627604018f783bf6354a13870b3e7785edca69b5fPaul Duffin dos2.close(); 33727604018f783bf6354a13870b3e7785edca69b5fPaul Duffin fail("IOException not thrown"); 33827604018f783bf6354a13870b3e7785edca69b5fPaul Duffin } catch (IOException e) { 33927604018f783bf6354a13870b3e7785edca69b5fPaul Duffin } 340d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 341d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath f1.delete(); 342d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 343d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 344d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath /** 345d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath * java.util.zip.DeflaterOutputStream#write(byte[], int, int) 346d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath */ 34727604018f783bf6354a13870b3e7785edca69b5fPaul Duffin @DisableResourceLeakageDetection( 34827604018f783bf6354a13870b3e7785edca69b5fPaul Duffin why = "DeflaterOutputStream.close() does not work properly if finish() throws an" 34927604018f783bf6354a13870b3e7785edca69b5fPaul Duffin + " exception; DeflaterOutputStream.finish() throws an exception if the" 35027604018f783bf6354a13870b3e7785edca69b5fPaul Duffin + " underlying OutputStream has been closed and the Deflater still has data to" 35127604018f783bf6354a13870b3e7785edca69b5fPaul Duffin + " write.", 35227604018f783bf6354a13870b3e7785edca69b5fPaul Duffin bug = "31797037") 353d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath public void test_write$BII() throws Exception { 354d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath byte byteArray[] = { 1, 3, 4, 7, 8, 3, 6 }; 355d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 356d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // Test to see if the correct bytes are saved. 357e10c61bb13373b95ba857cc3af60f94b9941ab9eNarayan Kamath File f1 = File.createTempFile("writeBII", ".tst"); 358d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath FileOutputStream fos1 = new FileOutputStream(f1); 359d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath DeflaterOutputStream dos1 = new DeflaterOutputStream(fos1); 360d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath dos1.write(byteArray, 2, 3); 361d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath dos1.close(); 362d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath FileInputStream fis = new FileInputStream(f1); 363d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath InflaterInputStream iis = new InflaterInputStream(fis); 364d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath assertEquals("Incorrect Byte Returned.", 4, iis.read()); 365d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath assertEquals("Incorrect Byte Returned.", 7, iis.read()); 366d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath assertEquals("Incorrect Byte Returned.", 8, iis.read()); 367d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath assertEquals("Incorrect Byte Returned (EOF).", -1, iis.read()); 368d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath assertEquals("Incorrect Byte Returned (EOF).", -1, iis.read()); 369d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath iis.close(); 370d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath f1.delete(); 371d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 372d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // Test for trying to write more bytes than available from the array 373e10c61bb13373b95ba857cc3af60f94b9941ab9eNarayan Kamath File f2 = File.createTempFile("writeBII2", ".tst"); 374d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath FileOutputStream fos2 = new FileOutputStream(f2); 375d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath DeflaterOutputStream dos2 = new DeflaterOutputStream(fos2); 376d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath try { 377d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath dos2.write(byteArray, 2, 10); 378d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath fail("IndexOutOfBoundsException not thrown"); 379d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } catch (IndexOutOfBoundsException e) { 380d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 381d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 382d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // Test for trying to write a negative number of bytes. 383d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath try { 384d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath dos2.write(byteArray, 2, Integer.MIN_VALUE); 385d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath fail("IndexOutOfBoundsException not thrown"); 386d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } catch (IndexOutOfBoundsException e) { 387d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 388d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 389d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // Test for trying to start writing from a byte < 0 from the array. 390d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath try { 391d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath dos2.write(byteArray, Integer.MIN_VALUE, 2); 392d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath fail("IndexOutOfBoundsException not thrown"); 393d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } catch (IndexOutOfBoundsException e) { 394d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 395d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 396d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // Test for trying to start writing from a byte > than the array 397d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // size. 398d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath try { 399d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath dos2.write(byteArray, 10, 2); 400d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath fail("IndexOutOfBoundsException not thrown"); 401d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } catch (IndexOutOfBoundsException e) { 402d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 403d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath dos2.close(); 404d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 405d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // Not sure if this test is that important. 406d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // Checks to see if you can write using the DeflaterOutputStream 407d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // after 408d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // the FileOutputStream has been closed. 409d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath FileOutputStream fos3 = new FileOutputStream(f2); 410d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath DeflaterOutputStream dos3 = new DeflaterOutputStream(fos3); 411d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath fos3.close(); 412d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath try { 413d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath dos3.write(byteArray, 2, 3); 414d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath fail("IOException not thrown"); 415d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } catch (IOException e) { 416d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 41727604018f783bf6354a13870b3e7785edca69b5fPaul Duffin // Close to try and free up the resources. 41827604018f783bf6354a13870b3e7785edca69b5fPaul Duffin try { 41927604018f783bf6354a13870b3e7785edca69b5fPaul Duffin dos3.close(); 42027604018f783bf6354a13870b3e7785edca69b5fPaul Duffin fail("IOException not thrown"); 42127604018f783bf6354a13870b3e7785edca69b5fPaul Duffin } catch (IOException e) { 42227604018f783bf6354a13870b3e7785edca69b5fPaul Duffin } 423d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 424d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath f2.delete(); 425d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 426d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 427d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath public void test_deflate() throws Exception { 428d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath File f1 = File.createTempFile("writeI1", ".tst"); 429d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath FileOutputStream fos = new FileOutputStream(f1); 430d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath MyDeflaterOutputStream dos = new MyDeflaterOutputStream(fos); 431d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath assertFalse(dos.getDaflateFlag()); 432d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath for (int i = 0; i < 3; i++) { 433d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath dos.write(i); 434d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 435d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath assertTrue(dos.getDaflateFlag()); 436d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath dos.close(); 437d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 438d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath} 439