DeflaterOutputStreamTest.java revision d567f9025c4b94fc5e9b47f5702c1b48c2a45c96
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;
29d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath
30d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamathimport junit.framework.TestCase;
31d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath
32d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamathpublic class DeflaterOutputStreamTest extends TestCase {
33d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath
34d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath    private class MyDeflaterOutputStream extends DeflaterOutputStream {
35d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        boolean deflateFlag = false;
36d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath
37d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        MyDeflaterOutputStream(OutputStream out) {
38d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath            super(out);
39d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        }
40d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath
41d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        MyDeflaterOutputStream(OutputStream out, Deflater defl) {
42d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath            super(out, defl);
43d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        }
44d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath
45d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        MyDeflaterOutputStream(OutputStream out, Deflater defl, int size) {
46d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath            super(out, defl, size);
47d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        }
48d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath
49d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        byte[] getProtectedBuf() {
50d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath            return buf;
51d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        }
52d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath
53d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        protected void deflate() throws IOException {
54d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath            deflateFlag = true;
55d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath            super.deflate();
56d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        }
57d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath
58d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        boolean getDaflateFlag() {
59d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath            return deflateFlag;
60d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        }
61d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath    }
62d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath
63d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath    private byte outPutBuf[] = new byte[500];
64d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath
65d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath    @Override
66d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath    protected void setUp() {
67d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        // setting up a deflater to be used
68d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        byte byteArray[] = { 1, 3, 4, 7, 8 };
69d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        int x = 0;
70d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        Deflater deflate = new Deflater(1);
71d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        deflate.setInput(byteArray);
72d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        while (!(deflate.needsInput())) {
73d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath            x += deflate.deflate(outPutBuf, x, outPutBuf.length - x);
74d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        }
75d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        deflate.finish();
76d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        while (!(deflate.finished())) {
77d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath            x = x + deflate.deflate(outPutBuf, x, outPutBuf.length - x);
78d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        }
79d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        deflate.end();
80d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath    }
81d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath
82d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath    /**
83d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath     * java.util.zip.DeflaterOutputStream#DeflaterOutputStream(java.io.OutputStream,
84d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath     *java.util.zip.Deflater)
85d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath     */
86d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath    public void test_ConstructorLjava_io_OutputStreamLjava_util_zip_Deflater() throws Exception {
87d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        byte byteArray[] = { 1, 3, 4, 7, 8 };
88d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        File f1 = new File("hyts_ConstruOD.tst");
89d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        FileOutputStream fos = new FileOutputStream(f1);
90d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        Deflater defl = null;
91d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        MyDeflaterOutputStream dos;
92d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        // Test for a null Deflater.
93d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        try {
94d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath            dos = new MyDeflaterOutputStream(fos, defl);
95d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath            fail("NullPointerException Not Thrown");
96d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        } catch (NullPointerException e) {
97d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        }
98d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        defl = new Deflater();
99d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        dos = new MyDeflaterOutputStream(fos, defl);
100d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath
101d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        // Test to see if DeflaterOutputStream was created with the correct
102d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        // buffer.
103d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        assertEquals("Incorrect Buffer Size", 512, dos.getProtectedBuf().length);
104d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath
105d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        dos.write(byteArray);
106d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        dos.close();
107d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        f1.delete();
108d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath    }
109d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath
110d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath    /**
111d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath     * java.util.zip.DeflaterOutputStream#DeflaterOutputStream(java.io.OutputStream)
112d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath     */
113d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath    public void test_ConstructorLjava_io_OutputStream() throws Exception {
114d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        File f1 = new File("hyts_ConstruO.tst");
115d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        FileOutputStream fos = new FileOutputStream(f1);
116d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        MyDeflaterOutputStream dos = new MyDeflaterOutputStream(fos);
117d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath
118d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        // Test to see if DeflaterOutputStream was created with the correct
119d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        // buffer.
120d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        assertEquals("Incorrect Buffer Size", 512, dos.getProtectedBuf().length);
121d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath
122d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        dos.write(outPutBuf);
123d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        dos.close();
124d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        f1.delete();
125d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath    }
126d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath
127d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath    /**
128d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath     * java.util.zip.DeflaterOutputStream#DeflaterOutputStream(java.io.OutputStream,
129d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath     *java.util.zip.Deflater, int)
130d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath     */
131d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath    public void test_ConstructorLjava_io_OutputStreamLjava_util_zip_DeflaterI()
132d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath            throws Exception {
133d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        int buf = 5;
134d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        int negBuf = -5;
135d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        int zeroBuf = 0;
136d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        byte byteArray[] = { 1, 3, 4, 7, 8, 3, 6 };
137d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        File f1 = new File("hyts_ConstruODI.tst");
138d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        FileOutputStream fos = new FileOutputStream(f1);
139d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        Deflater defl = null;
140d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        MyDeflaterOutputStream dos;
141d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath
142d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        // Test for a null Deflater.
143d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        try {
144d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath            dos = new MyDeflaterOutputStream(fos, defl, buf);
145d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath            fail("NullPointerException Not Thrown");
146d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        } catch (NullPointerException e) {
147d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        }
148d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        defl = new Deflater();
149d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath
150d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        // Test for a negative buf.
151d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        try {
152d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath            dos = new MyDeflaterOutputStream(fos, defl, negBuf);
153d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath            fail("IllegalArgumentException Not Thrown");
154d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        } catch (IllegalArgumentException e) {
155d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        }
156d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath
157d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        // Test for a zero buf.
158d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        try {
159d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath            dos = new MyDeflaterOutputStream(fos, defl, zeroBuf);
160d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath            fail("IllegalArgumentException Not Thrown");
161d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        } catch (IllegalArgumentException e) {
162d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        }
163d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath
164d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        // Test to see if DeflaterOutputStream was created with the correct
165d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        // buffer.
166d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        dos = new MyDeflaterOutputStream(fos, defl, buf);
167d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        assertEquals("Incorrect Buffer Size", 5, dos.getProtectedBuf().length);
168d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath
169d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        dos.write(byteArray);
170d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        dos.close();
171d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        f1.delete();
172d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath    }
173d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath
174d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath    /**
175d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath     * java.util.zip.DeflaterOutputStream#close()
176d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath     */
177d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath    public void test_close() throws Exception {
178d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        File f1 = File.createTempFile("close", ".tst");
179d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath
180d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        InflaterInputStream iis = new InflaterInputStream(new FileInputStream(f1));
181d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        try {
182d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath            iis.read();
183d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath            fail("EOFException Not Thrown");
184d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        } catch (EOFException e) {
185d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        }
186d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath
187d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        FileOutputStream fos = new FileOutputStream(f1);
188d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        DeflaterOutputStream dos = new DeflaterOutputStream(fos);
189d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        byte byteArray[] = { 1, 3, 4, 6 };
190d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        dos.write(byteArray);
191d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        dos.close();
192d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath
193d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        iis = new InflaterInputStream(new FileInputStream(f1));
194d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath
195d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        // Test to see if the finish method wrote the bytes to the file.
196d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        assertEquals("Incorrect Byte Returned.", 1, iis.read());
197d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        assertEquals("Incorrect Byte Returned.", 3, iis.read());
198d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        assertEquals("Incorrect Byte Returned.", 4, iis.read());
199d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        assertEquals("Incorrect Byte Returned.", 6, iis.read());
200d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        assertEquals("Incorrect Byte Returned.", -1, iis.read());
201d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        assertEquals("Incorrect Byte Returned.", -1, iis.read());
202d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        iis.close();
203d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath
204d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        // Not sure if this test will stay.
205d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        FileOutputStream fos2 = new FileOutputStream(f1);
206d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        DeflaterOutputStream dos2 = new DeflaterOutputStream(fos2);
207d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        fos2.close();
208d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        try {
209d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath            dos2.close();
210d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath            fail("IOException not thrown");
211d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        } catch (IOException e) {
212d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        }
213d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath
214d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        // Test to write to a closed DeflaterOutputStream
215d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        try {
216d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath            dos.write(5);
217d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath            fail("DeflaterOutputStream Able To Write After Being Closed.");
218d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        } catch (IOException e) {
219d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        }
220d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath
221d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        // Test to write to a FileOutputStream that should have been closed
222d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        // by
223d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        // the DeflaterOutputStream.
224d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        try {
225d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath            fos.write(("testing").getBytes());
226d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath            fail("FileOutputStream Able To Write After Being Closed.");
227d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        } catch (IOException e) {
228d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        }
229d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath
230d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        f1.delete();
231d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath    }
232d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath
233d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath    /**
234d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath     * java.util.zip.DeflaterOutputStream#finish()
235d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath     */
236d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath    public void test_finish() throws Exception {
237d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        // Need test to see if method finish() actually finishes
238d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        // Only testing possible errors, not if it actually works
239d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath
240d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        File f1 = new File("finish.tst");
241d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        FileOutputStream fos1 = new FileOutputStream(f1);
242d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        DeflaterOutputStream dos = new DeflaterOutputStream(fos1);
243d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        byte byteArray[] = { 1, 3, 4, 6 };
244d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        dos.write(byteArray);
245d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        dos.finish();
246d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath
247d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        // Test to see if the same FileOutputStream can be used with the
248d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        // DeflaterOutputStream after finish is called.
249d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        try {
250d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath            dos.write(1);
251d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath            fail("IOException not thrown");
252d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        } catch (IOException e) {
253d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        }
254d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath
255d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        // Test for writing with a new FileOutputStream using the same
256d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        // DeflaterOutputStream.
257d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        FileOutputStream fos2 = new FileOutputStream(f1);
258d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        dos = new DeflaterOutputStream(fos2);
259d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        dos.write(1);
260d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath
261d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        // Test for writing to FileOutputStream fos1, which should be open.
262d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        fos1.write(("testing").getBytes());
263d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath
264d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        // Test for writing to FileOutputStream fos2, which should be open.
265d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        fos2.write(("testing").getBytes());
266d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath
267d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        // Not sure if this test will stay.
268d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        FileOutputStream fos3 = new FileOutputStream(f1);
269d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        DeflaterOutputStream dos3 = new DeflaterOutputStream(fos3);
270d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        fos3.close();
271d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        try {
272d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath            dos3.finish();
273d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath            fail("IOException not thrown");
274d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        } catch (IOException e) {
275d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        }
276d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath
277d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        // dos.close() won't close fos1 because it has been re-assigned to
278d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        // fos2
279d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        fos1.close();
280d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        dos.close();
281d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        f1.delete();
282d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath    }
283d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath
284d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath    /**
285d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath     * java.util.zip.DeflaterOutputStream#write(int)
286d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath     */
287d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath    public void test_writeI() throws Exception {
288d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        File f1 = new File("writeI1.tst");
289d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        FileOutputStream fos = new FileOutputStream(f1);
290d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        DeflaterOutputStream dos = new DeflaterOutputStream(fos);
291d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        for (int i = 0; i < 3; i++) {
292d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath            dos.write(i);
293d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        }
294d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        dos.close();
295d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        FileInputStream fis = new FileInputStream(f1);
296d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        InflaterInputStream iis = new InflaterInputStream(fis);
297d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        for (int i = 0; i < 3; i++) {
298d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath            assertEquals("Incorrect Byte Returned.", i, iis.read());
299d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        }
300d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        assertEquals("Incorrect Byte Returned (EOF).", -1, iis.read());
301d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        assertEquals("Incorrect Byte Returned (EOF).", -1, iis.read());
302d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        iis.close();
303d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath
304d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        // Not sure if this test is that important.
305d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        // Checks to see if you can write using the DeflaterOutputStream
306d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        // after
307d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        // the FileOutputStream has been closed.
308d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        FileOutputStream fos2 = new FileOutputStream(f1);
309d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        DeflaterOutputStream dos2 = new DeflaterOutputStream(fos2);
310d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        fos2.close();
311d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        try {
312d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath            dos2.write(2);
313d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath            fail("IOException not thrown");
314d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        } catch (IOException e) {
315d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        }
316d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath
317d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        f1.delete();
318d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath    }
319d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath
320d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath    /**
321d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath     * java.util.zip.DeflaterOutputStream#write(byte[], int, int)
322d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath     */
323d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath    public void test_write$BII() throws Exception {
324d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        byte byteArray[] = { 1, 3, 4, 7, 8, 3, 6 };
325d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath
326d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        // Test to see if the correct bytes are saved.
327d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        File f1 = new File("writeBII.tst");
328d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        FileOutputStream fos1 = new FileOutputStream(f1);
329d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        DeflaterOutputStream dos1 = new DeflaterOutputStream(fos1);
330d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        dos1.write(byteArray, 2, 3);
331d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        dos1.close();
332d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        FileInputStream fis = new FileInputStream(f1);
333d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        InflaterInputStream iis = new InflaterInputStream(fis);
334d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        assertEquals("Incorrect Byte Returned.", 4, iis.read());
335d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        assertEquals("Incorrect Byte Returned.", 7, iis.read());
336d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        assertEquals("Incorrect Byte Returned.", 8, iis.read());
337d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        assertEquals("Incorrect Byte Returned (EOF).", -1, iis.read());
338d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        assertEquals("Incorrect Byte Returned (EOF).", -1, iis.read());
339d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        iis.close();
340d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        f1.delete();
341d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath
342d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        // Test for trying to write more bytes than available from the array
343d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        File f2 = new File("writeBII2.tst");
344d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        FileOutputStream fos2 = new FileOutputStream(f2);
345d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        DeflaterOutputStream dos2 = new DeflaterOutputStream(fos2);
346d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        try {
347d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath            dos2.write(byteArray, 2, 10);
348d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath            fail("IndexOutOfBoundsException not thrown");
349d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        } catch (IndexOutOfBoundsException e) {
350d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        }
351d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath
352d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        // Test for trying to write a negative number of bytes.
353d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        try {
354d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath            dos2.write(byteArray, 2, Integer.MIN_VALUE);
355d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath            fail("IndexOutOfBoundsException not thrown");
356d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        } catch (IndexOutOfBoundsException e) {
357d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        }
358d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath
359d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        // Test for trying to start writing from a byte < 0 from the array.
360d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        try {
361d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath            dos2.write(byteArray, Integer.MIN_VALUE, 2);
362d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath            fail("IndexOutOfBoundsException not thrown");
363d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        } catch (IndexOutOfBoundsException e) {
364d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        }
365d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath
366d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        // Test for trying to start writing from a byte > than the array
367d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        // size.
368d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        try {
369d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath            dos2.write(byteArray, 10, 2);
370d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath            fail("IndexOutOfBoundsException not thrown");
371d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        } catch (IndexOutOfBoundsException e) {
372d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        }
373d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        dos2.close();
374d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath
375d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        // Not sure if this test is that important.
376d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        // Checks to see if you can write using the DeflaterOutputStream
377d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        // after
378d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        // the FileOutputStream has been closed.
379d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        FileOutputStream fos3 = new FileOutputStream(f2);
380d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        DeflaterOutputStream dos3 = new DeflaterOutputStream(fos3);
381d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        fos3.close();
382d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        try {
383d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath            dos3.write(byteArray, 2, 3);
384d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath            fail("IOException not thrown");
385d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        } catch (IOException e) {
386d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        }
387d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath
388d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        f2.delete();
389d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath    }
390d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath
391d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath    public void test_deflate() throws Exception {
392d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        File f1 = File.createTempFile("writeI1", ".tst");
393d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        FileOutputStream fos = new FileOutputStream(f1);
394d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        MyDeflaterOutputStream dos = new MyDeflaterOutputStream(fos);
395d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        assertFalse(dos.getDaflateFlag());
396d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        for (int i = 0; i < 3; i++) {
397d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath            dos.write(i);
398d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        }
399d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        assertTrue(dos.getDaflateFlag());
400d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        dos.close();
401d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath    }
402d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath}
403