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.InputStream; 21d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamathimport java.io.UnsupportedEncodingException; 22d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamathimport java.util.zip.Adler32; 23d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamathimport java.util.zip.DataFormatException; 24d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamathimport java.util.zip.Deflater; 25d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamathimport java.util.zip.Inflater; 2627604018f783bf6354a13870b3e7785edca69b5fPaul Duffinimport libcore.junit.junit3.TestCaseWithRules; 2727604018f783bf6354a13870b3e7785edca69b5fPaul Duffinimport libcore.junit.util.ResourceLeakageDetector; 2827604018f783bf6354a13870b3e7785edca69b5fPaul Duffinimport org.junit.Rule; 2927604018f783bf6354a13870b3e7785edca69b5fPaul Duffinimport org.junit.rules.TestRule; 30d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamathimport tests.support.resource.Support_Resources; 31d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 3227604018f783bf6354a13870b3e7785edca69b5fPaul Duffinpublic class DeflaterTest extends TestCaseWithRules { 3327604018f783bf6354a13870b3e7785edca69b5fPaul Duffin @Rule 3427604018f783bf6354a13870b3e7785edca69b5fPaul Duffin public TestRule guardRule = ResourceLeakageDetector.getRule(); 35d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 36d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath class MyDeflater extends Deflater { 37d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath MyDeflater() { 38d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath super(); 39d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 40d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 41d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath MyDeflater(int lvl) { 42d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath super(lvl); 43d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 44d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 45d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath void myFinalize() { 46d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath finalize(); 47d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 48d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 49d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath int getDefCompression() { 50d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath return DEFAULT_COMPRESSION; 51d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 52d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 53d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath int getDefStrategy() { 54d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath return DEFAULT_STRATEGY; 55d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 56d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 57d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath int getHuffman() { 58d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath return HUFFMAN_ONLY; 59d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 60d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 61d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath int getFiltered() { 62d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath return FILTERED; 63d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 64d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 65d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 66d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath /** 67d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath * java.util.zip.Deflater#deflate(byte[]) 68d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath */ 69d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath public void test_deflate$B() { 70d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath byte outPutBuf[] = new byte[50]; 71d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath byte byteArray[] = { 1, 3, 4, 7, 8 }; 72d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath byte outPutInf[] = new byte[50]; 73d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath int x = 0; 74d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 75d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath Deflater defl = new Deflater(); 76d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath defl.setInput(byteArray); 77d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath defl.finish(); 78d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath while (!defl.finished()) { 79d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath x += defl.deflate(outPutBuf); 80d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 81d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath assertEquals("Deflater at end of stream, should return 0", 0, defl 82d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath .deflate(outPutBuf)); 83d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath int totalOut = defl.getTotalOut(); 84d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath int totalIn = defl.getTotalIn(); 85d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath assertEquals(x, totalOut); 86d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath assertEquals(byteArray.length, totalIn); 87d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath defl.end(); 88d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 89d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath Inflater infl = new Inflater(); 90d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath try { 91d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath infl.setInput(outPutBuf); 92d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath while (!infl.finished()) { 93d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath infl.inflate(outPutInf); 94d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 95d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } catch (DataFormatException e) { 96d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath fail("Invalid input to be decompressed"); 97d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 98d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath assertEquals(totalIn, infl.getTotalOut()); 99d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath assertEquals(totalOut, infl.getTotalIn()); 100d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath for (int i = 0; i < byteArray.length; i++) { 101d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath assertEquals(byteArray[i], outPutInf[i]); 102d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 103d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath assertEquals("Final decompressed data contained more bytes than original", 104d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 0, outPutInf[byteArray.length]); 105d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath infl.end(); 106d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 107d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 108d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath /** 109d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath * java.util.zip.Deflater#deflate(byte[], int, int) 110d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath */ 111d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath public void test_deflate$BII() { 112d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath byte outPutBuf[] = new byte[50]; 113d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath byte byteArray[] = { 5, 2, 3, 7, 8 }; 114d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath byte outPutInf[] = new byte[50]; 115d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath int offSet = 1; 116d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath int length = outPutBuf.length - 1; 117d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath int x = 0; 118d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 119d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath Deflater defl = new Deflater(); 120d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath defl.setInput(byteArray); 121d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath defl.finish(); 122d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath while (!defl.finished()) { 123d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath x += defl.deflate(outPutBuf, offSet, length); 124d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 125d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath assertEquals("Deflater at end of stream, should return 0", 0, defl.deflate( 126d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath outPutBuf, offSet, length)); 127d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath int totalOut = defl.getTotalOut(); 128d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath int totalIn = defl.getTotalIn(); 129d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath assertEquals(x, totalOut); 130d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath assertEquals(byteArray.length, totalIn); 131d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath defl.end(); 132d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 133d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath Inflater infl = new Inflater(); 134d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath try { 135d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath infl.setInput(outPutBuf, offSet, length); 136d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath while (!infl.finished()) { 137d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath infl.inflate(outPutInf); 138d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 139d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } catch (DataFormatException e) { 140d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath fail("Invalid input to be decompressed"); 141d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 142d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath assertEquals(totalIn, infl.getTotalOut()); 143d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath assertEquals(totalOut, infl.getTotalIn()); 144d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath for (int i = 0; i < byteArray.length; i++) { 145d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath assertEquals(byteArray[i], outPutInf[i]); 146d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 147d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath assertEquals("Final decompressed data contained more bytes than original", 148d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 0, outPutInf[byteArray.length]); 149d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath infl.end(); 150d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 151d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // Set of tests testing the boundaries of the offSet/length 152d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath defl = new Deflater(); 153d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath outPutBuf = new byte[100]; 154d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath defl.setInput(byteArray); 155d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath for (int i = 0; i < 2; i++) { 156d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath if (i == 0) { 157d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath offSet = outPutBuf.length + 1; 158d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath length = outPutBuf.length; 159d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } else { 160d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath offSet = 0; 161d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath length = outPutBuf.length + 1; 162d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 163d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath try { 164d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath defl.deflate(outPutBuf, offSet, length); 165d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath fail("Test " + i 166d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath + ": ArrayIndexOutOfBoundsException not thrown"); 167d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } catch (ArrayIndexOutOfBoundsException e) { 168d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 169d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 170d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath defl.end(); 171d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 172d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 173d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath /** 174d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath * java.util.zip.Deflater#end() 175d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath */ 176d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath public void test_end() { 177d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath byte byteArray[] = { 5, 2, 3, 7, 8 }; 178d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath byte outPutBuf[] = new byte[100]; 179d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 180d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath Deflater defl = new Deflater(); 181d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath defl.setInput(byteArray); 182d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath defl.finish(); 183d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath while (!defl.finished()) { 184d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath defl.deflate(outPutBuf); 185d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 186d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath defl.end(); 187d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath helper_end_test(defl, "end"); 188d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 189d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 190d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath /** 191d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath * java.util.zip.Deflater#finalize() 192d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath */ 193d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath public void test_finalize() { 194d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath MyDeflater mdefl = new MyDeflater(); 195d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath mdefl.myFinalize(); 196d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath System.gc(); 197d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath helper_end_test(mdefl, "finalize"); 198d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 199d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 200d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath /** 201d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath * java.util.zip.Deflater#finish() 202d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath */ 203d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath public void test_finish() throws Exception { 204d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // This test already here, its the same as test_deflate() 205d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath byte byteArray[] = { 5, 2, 3, 7, 8 }; 206d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath byte outPutBuf[] = new byte[100]; 207d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath byte outPutInf[] = new byte[100]; 208d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath int x = 0; 209d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath Deflater defl = new Deflater(); 210d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath defl.setInput(byteArray); 211d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath defl.finish(); 212d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 213d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // needsInput should never return true after finish() is called 214d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath if (System.getProperty("java.vendor").startsWith("IBM")) { 215d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath assertFalse("needsInput() should return false after finish() is called", defl 216d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath .needsInput()); 217d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 218d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 219d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath while (!defl.finished()) { 220d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath x += defl.deflate(outPutBuf); 221d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 222d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath int totalOut = defl.getTotalOut(); 223d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath int totalIn = defl.getTotalIn(); 224d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath assertEquals(x, totalOut); 225d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath assertEquals(byteArray.length, totalIn); 226d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath defl.end(); 227d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 228d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath Inflater infl = new Inflater(); 229d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath infl.setInput(outPutBuf); 230d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath while (!infl.finished()) { 231d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath infl.inflate(outPutInf); 232d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 233d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath assertEquals(totalIn, infl.getTotalOut()); 234d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath assertEquals(totalOut, infl.getTotalIn()); 235d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath for (int i = 0; i < byteArray.length; i++) { 236d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath assertEquals(byteArray[i], outPutInf[i]); 237d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 238d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath assertEquals("Final decompressed data contained more bytes than original", 239d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 0, outPutInf[byteArray.length]); 240d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath infl.end(); 241d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 242d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 243d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath /** 244d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath * java.util.zip.Deflater#finished() 245d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath */ 246d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath public void test_finished() { 247d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath byte byteArray[] = { 5, 2, 3, 7, 8 }; 248d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath byte outPutBuf[] = new byte[100]; 249d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath Deflater defl = new Deflater(); 250d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath assertTrue("Test 1: Deflater should not be finished.", !defl.finished()); 251d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath defl.setInput(byteArray); 252d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath assertTrue("Test 2: Deflater should not be finished.", !defl.finished()); 253d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath defl.finish(); 254d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath assertTrue("Test 3: Deflater should not be finished.", !defl.finished()); 255d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath while (!defl.finished()) { 256d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath defl.deflate(outPutBuf); 257d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 258d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath assertTrue("Test 4: Deflater should be finished.", defl.finished()); 259d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath defl.end(); 260d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath assertTrue("Test 5: Deflater should be finished.", defl.finished()); 261d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 262d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 263d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath /** 264d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath * java.util.zip.Deflater#getAdler() 265d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath */ 266d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath public void test_getAdler() { 267d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath byte byteArray[] = { 'a', 'b', 'c', 1, 2, 3 }; 268d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath byte outPutBuf[] = new byte[100]; 269d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath Deflater defl = new Deflater(); 270d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 271d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // getting the checkSum value using the Adler 272d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath defl.setInput(byteArray); 273d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath defl.finish(); 274d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath while (!defl.finished()) { 275d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath defl.deflate(outPutBuf); 276d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 277d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath long checkSumD = defl.getAdler(); 278d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath defl.end(); 279d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 280d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // getting the checkSum value through the Adler32 class 281d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath Adler32 adl = new Adler32(); 282d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath adl.update(byteArray); 283d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath long checkSumR = adl.getValue(); 284d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath assertEquals( 285d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath "The checksum value returned by getAdler() is not the same as the checksum returned by creating the adler32 instance", 286d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath checkSumD, checkSumR); 287d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 288d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 289d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath /** 290d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath * java.util.zip.Deflater#getTotalIn() 291d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath */ 292d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath public void test_getTotalIn() { 293d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath byte outPutBuf[] = new byte[5]; 294d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath byte byteArray[] = { 1, 3, 4, 7, 8 }; 295d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 296d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath Deflater defl = new Deflater(); 297d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath defl.setInput(byteArray); 298d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath defl.finish(); 299d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath while (!defl.finished()) { 300d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath defl.deflate(outPutBuf); 301d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 302d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath assertEquals(byteArray.length, defl.getTotalIn()); 303d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath defl.end(); 304d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 305d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath defl = new Deflater(); 306d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath int offSet = 2; 307d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath int length = 3; 308d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath outPutBuf = new byte[5]; 309d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath defl.setInput(byteArray, offSet, length); 310d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath defl.finish(); 311d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath while (!defl.finished()) { 312d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath defl.deflate(outPutBuf); 313d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 314d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath assertEquals(length, defl.getTotalIn()); 315d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath defl.end(); 316d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 317d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 318d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath /** 319d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath * java.util.zip.Deflater#getTotalOut() 320d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath */ 321d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath public void test_getTotalOut() { 322d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // the getTotalOut should equal the sum of value returned by deflate() 323d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath byte outPutBuf[] = new byte[5]; 324d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath byte byteArray[] = { 5, 2, 3, 7, 8 }; 325d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath int x = 0; 326d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath Deflater defl = new Deflater(); 327d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath defl.setInput(byteArray); 328d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath defl.finish(); 329d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath while (!defl.finished()) { 330d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath x += defl.deflate(outPutBuf); 331d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 332d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath assertEquals(x, defl.getTotalOut()); 333d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath defl.end(); 334d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 335d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath x = 0; 336d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath int offSet = 2; 337d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath int length = 3; 338d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath defl = new Deflater(); 339d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath outPutBuf = new byte[5]; 340d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath defl.setInput(byteArray, offSet, length); 341d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath defl.finish(); 342d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath while (!defl.finished()) { 343d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath x += defl.deflate(outPutBuf); 344d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 345d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath assertEquals(x, defl.getTotalOut()); 34627604018f783bf6354a13870b3e7785edca69b5fPaul Duffin defl.end(); 347d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 348d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 349d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath /** 350d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath * java.util.zip.Deflater#needsInput() 351d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath */ 352d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath public void test_needsInput() { 353d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath Deflater defl = new Deflater(); 354d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath assertTrue( 355d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath "needsInput give the wrong boolean value as a result of no input buffer", 356d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath defl.needsInput()); 357d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath byte byteArray[] = { 1, 2, 3 }; 358d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath defl.setInput(byteArray); 359d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath assertFalse( 360d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath "needsInput give wrong boolean value as a result of a full input buffer", 361d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath defl.needsInput()); 362d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath byte[] outPutBuf = new byte[50]; 363d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath while (!defl.needsInput()) { 364d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath defl.deflate(outPutBuf); 365d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 366d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath byte emptyByteArray[] = new byte[0]; 367d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath defl.setInput(emptyByteArray); 368d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath assertTrue( 369d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath "needsInput give wrong boolean value as a result of an empty input buffer", 370d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath defl.needsInput()); 371d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath defl.setInput(byteArray); 372d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath defl.finish(); 373d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath while (!defl.finished()) { 374d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath defl.deflate(outPutBuf); 375d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 376d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // needsInput should NOT return true after finish() has been 377d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // called. 378d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath if (System.getProperty("java.vendor").startsWith("IBM")) { 379d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath assertFalse( 380d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath "needsInput gave wrong boolean value as a result of finish() being called", 381d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath defl.needsInput()); 382d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 383d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath defl.end(); 384d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 385d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 386d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath /** 387d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath * java.util.zip.Deflater#reset() 388d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath */ 389d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath public void test_reset() { 390d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath byte outPutBuf[] = new byte[100]; 391d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath byte outPutInf[] = new byte[100]; 392d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath byte curArray[] = new byte[5]; 393d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath byte byteArray[] = { 1, 3, 4, 7, 8 }; 394d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath byte byteArray2[] = { 8, 7, 4, 3, 1 }; 395d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath int x = 0; 396d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath int orgValue = 0; 397d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath Deflater defl = new Deflater(); 398d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 399d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath for (int i = 0; i < 3; i++) { 400d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath if (i == 0) { 401d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath curArray = byteArray; 402d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } else if (i == 1) { 403d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath curArray = byteArray2; 404d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } else { 405d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath defl.reset(); 406d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 407d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 408d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath defl.setInput(curArray); 409d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath defl.finish(); 410d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath while (!defl.finished()) { 411d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath x += defl.deflate(outPutBuf); 412d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 413d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 414d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath if (i == 0) { 415d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath assertEquals(x, defl.getTotalOut()); 416d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } else if (i == 1) { 417d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath assertEquals(x, orgValue); 418d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } else { 419d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath assertEquals(x, orgValue * 2); 420d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 421d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 422d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath if (i == 0) { 423d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath orgValue = x; 424d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 425d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 426d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath try { 427d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath Inflater infl = new Inflater(); 428d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath infl.setInput(outPutBuf); 429d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath while (!infl.finished()) { 430d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath infl.inflate(outPutInf); 431d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 432d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath infl.end(); 433d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } catch (DataFormatException e) { 434d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath fail("Test " + i + ": Invalid input to be decompressed"); 435d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 436d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 437d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath if (i == 1) { 438d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath curArray = byteArray; 439d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 440d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 441d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath for (int j = 0; j < curArray.length; j++) { 442d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath assertEquals(curArray[j], outPutInf[j]); 443d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 444d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath assertEquals(0, outPutInf[curArray.length]); 445d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 44627604018f783bf6354a13870b3e7785edca69b5fPaul Duffin defl.end(); 447d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 448d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 449d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath /** 450d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath * java.util.zip.Deflater#setDictionary(byte[]) 451d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath */ 452d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath public void test_setDictionary$B() { 453d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // This test is very close to getAdler() 454d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath byte dictionaryArray[] = { 'e', 'r', 't', 'a', 'b', 2, 3 }; 455d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath byte byteArray[] = { 4, 5, 3, 2, 'a', 'b', 6, 7, 8, 9, 0, 's', '3', 456d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 'w', 'r' }; 457d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath byte outPutBuf[] = new byte[100]; 458d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 459d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath Deflater defl = new Deflater(); 460d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath long deflAdler = defl.getAdler(); 461d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath assertEquals("No dictionary set, no data deflated, getAdler should return 1", 462d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 1, deflAdler); 463d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath defl.setDictionary(dictionaryArray); 464d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath deflAdler = defl.getAdler(); 465d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 466d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // getting the checkSum value through the Adler32 class 467d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath Adler32 adl = new Adler32(); 468d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath adl.update(dictionaryArray); 469d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath long realAdler = adl.getValue(); 470d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath assertEquals(deflAdler, realAdler); 471d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 472d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath defl.setInput(byteArray); 473d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath defl.finish(); 474d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath while (!defl.finished()) { 475d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath defl.deflate(outPutBuf); 476d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 477d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath deflAdler = defl.getAdler(); 478d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath adl = new Adler32(); 479d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath adl.update(byteArray); 480d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath realAdler = adl.getValue(); 481d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // Deflate is finished and there were bytes deflated that did not occur 482d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // in the dictionaryArray, therefore a new dictionary was automatically 483d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // set. 484d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath assertEquals(realAdler, deflAdler); 485d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath defl.end(); 486d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 487d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 488d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath /** 489d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath * java.util.zip.Deflater#setDictionary(byte[], int, int) 490d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath */ 491d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath public void test_setDictionary$BII() { 492d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // This test is very close to getAdler() 493d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath byte dictionaryArray[] = { 'e', 'r', 't', 'a', 'b', 2, 3, 'o', 't' }; 494d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath byte byteArray[] = { 4, 5, 3, 2, 'a', 'b', 6, 7, 8, 9, 0, 's', '3', 495d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 'w', 'r', 't', 'u', 'i', 'o', 4, 5, 6, 7 }; 496d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath byte outPutBuf[] = new byte[500]; 497d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 498d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath int offSet = 4; 499d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath int length = 5; 500d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 501d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath Deflater defl = new Deflater(); 502d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath long deflAdler = defl.getAdler(); 503d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath assertEquals("No dictionary set, no data deflated, getAdler should return 1", 504d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 1, deflAdler); 505d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath defl.setDictionary(dictionaryArray, offSet, length); 506d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath deflAdler = defl.getAdler(); 507d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 508d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // getting the checkSum value through the Adler32 class 509d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath Adler32 adl = new Adler32(); 510d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath adl.update(dictionaryArray, offSet, length); 511d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath long realAdler = adl.getValue(); 512d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath assertEquals(deflAdler, realAdler); 513d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 514d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath defl.setInput(byteArray); 515d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath while (!defl.needsInput()) { 516d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath defl.deflate(outPutBuf); 517d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 518d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath deflAdler = defl.getAdler(); 519d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath adl = new Adler32(); 520d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath adl.update(byteArray); 521d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath realAdler = adl.getValue(); 522d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // Deflate is finished and there were bytes deflated that did not occur 523d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // in the dictionaryArray, therefore a new dictionary was automatically 524d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // set. 525d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath assertEquals(realAdler, deflAdler); 526d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath defl.end(); 527d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 528d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // boundary check 529d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath defl = new Deflater(); 530d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath for (int i = 0; i < 2; i++) { 531d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath if (i == 0) { 532d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath offSet = 0; 533d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath length = dictionaryArray.length + 1; 534d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } else { 535d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath offSet = dictionaryArray.length + 1; 536d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath length = 1; 537d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 538d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath try { 539d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath defl.setDictionary(dictionaryArray, offSet, length); 540d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath fail( 541d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath "Test " 542d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath + i 543d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath + ": boundary check for setDictionary failed for offset " 544d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath + offSet + " and length " + length); 545d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } catch (ArrayIndexOutOfBoundsException e) { 546d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 547d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 54827604018f783bf6354a13870b3e7785edca69b5fPaul Duffin defl.end(); 549d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 550d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 551d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath /** 552d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath * java.util.zip.Deflater#setInput(byte[]) 553d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath */ 554d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath public void test_setInput$B() { 555d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath byte[] byteArray = { 1, 2, 3 }; 556d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath byte[] outPutBuf = new byte[50]; 557d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath byte[] outPutInf = new byte[50]; 558d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 559d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath Deflater defl = new Deflater(); 560d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath defl.setInput(byteArray); 561d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath assertTrue("the array buffer in setInput() is empty", !defl 562d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath .needsInput()); 563d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // The second setInput() should be ignored since needsInput() return 564d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // false 565d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath defl.setInput(byteArray); 566d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath defl.finish(); 567d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath while (!defl.finished()) { 568d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath defl.deflate(outPutBuf); 569d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 570d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath defl.end(); 571d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 572d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath Inflater infl = new Inflater(); 573d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath try { 574d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath infl.setInput(outPutBuf); 575d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath while (!infl.finished()) { 576d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath infl.inflate(outPutInf); 577d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 578d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } catch (DataFormatException e) { 579d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath fail("Invalid input to be decompressed"); 580d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 581d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath for (int i = 0; i < byteArray.length; i++) { 582d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath assertEquals(byteArray[i], outPutInf[i]); 583d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 584d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath assertEquals(byteArray.length, infl.getTotalOut()); 585d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath infl.end(); 586d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 587d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 588d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath /** 589d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath * java.util.zip.Deflater#setInput(byte[], int, int) 590d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath */ 591d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath public void test_setInput$BII() throws Exception { 592d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath byte[] byteArray = { 1, 2, 3, 4, 5 }; 593d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath byte[] outPutBuf = new byte[50]; 594d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath byte[] outPutInf = new byte[50]; 595d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath int offSet = 1; 596d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath int length = 3; 597d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 598d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath Deflater defl = new Deflater(); 599d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath defl.setInput(byteArray, offSet, length); 600d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath assertFalse("the array buffer in setInput() is empty", defl.needsInput()); 601d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // The second setInput() should be ignored since needsInput() return 602d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // false 603d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath defl.setInput(byteArray, offSet, length); 604d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath defl.finish(); 605d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath while (!defl.finished()) { 606d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath defl.deflate(outPutBuf); 607d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 608d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath defl.end(); 609d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 610d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath Inflater infl = new Inflater(); 611d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath infl.setInput(outPutBuf); 612d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath while (!infl.finished()) { 613d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath infl.inflate(outPutInf); 614d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 615d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath for (int i = 0; i < length; i++) { 616d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath assertEquals(byteArray[i + offSet], outPutInf[i]); 617d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 618d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath assertEquals(length, infl.getTotalOut()); 619d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath infl.end(); 620d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 621d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // boundary check 622d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath defl = new Deflater(); 623d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath for (int i = 0; i < 2; i++) { 624d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath if (i == 0) { 625d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath offSet = 0; 626d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath length = byteArray.length + 1; 627d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } else { 628d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath offSet = byteArray.length + 1; 629d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath length = 1; 630d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 631d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath try { 632d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath defl.setInput(byteArray, offSet, length); 633d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath fail("Test " + i 634d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath + ": boundary check for setInput failed for offset " 635d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath + offSet + " and length " + length); 636d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } catch (ArrayIndexOutOfBoundsException e) { 637d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 638d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 63927604018f783bf6354a13870b3e7785edca69b5fPaul Duffin defl.end(); 640d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 641d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 642d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath /** 643d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath * java.util.zip.Deflater#setLevel(int) 644d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath */ 645d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath public void test_setLevelI() throws Exception { 646d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // Very similar to test_Constructor(int) 647d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath byte[] byteArray = new byte[100]; 648d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath InputStream inFile = Support_Resources.getStream("hyts_checkInput.txt"); 649d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath inFile.read(byteArray); 650d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath inFile.close(); 651d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 652d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath byte[] outPutBuf; 653d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath int totalOut; 654d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath for (int i = 0; i < 10; i++) { 655d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath Deflater defl = new Deflater(); 656d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath defl.setLevel(i); 657d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath outPutBuf = new byte[500]; 658d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath defl.setInput(byteArray); 659d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath while (!defl.needsInput()) { 660d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath defl.deflate(outPutBuf); 661d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 662d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath defl.finish(); 663d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath while (!defl.finished()) { 664d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath defl.deflate(outPutBuf); 665d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 666d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath totalOut = defl.getTotalOut(); 667d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath defl.end(); 668d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 669d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath outPutBuf = new byte[500]; 670d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath defl = new Deflater(i); 671d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath defl.setInput(byteArray); 672d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath while (!defl.needsInput()) { 673d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath defl.deflate(outPutBuf); 674d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 675d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath defl.finish(); 676d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath while (!defl.finished()) { 677d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath defl.deflate(outPutBuf); 678d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 679d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath assertEquals(totalOut, defl.getTotalOut()); 680d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath defl.end(); 681d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 682d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 683d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // testing boundaries 68427604018f783bf6354a13870b3e7785edca69b5fPaul Duffin Deflater boundDefl = new Deflater(); 685d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath try { 686d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // Level must be between 0-9 687d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath boundDefl.setLevel(-2); 688d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath fail( 689d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath "IllegalArgumentException not thrown when setting level to a number < 0."); 690d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } catch (IllegalArgumentException e) { 691d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 692d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath try { 693d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath boundDefl.setLevel(10); 694d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath fail( 695d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath "IllegalArgumentException not thrown when setting level to a number > 9."); 696d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } catch (IllegalArgumentException e) { 697d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 69827604018f783bf6354a13870b3e7785edca69b5fPaul Duffin boundDefl.end(); 699d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 700d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 701d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath /** 702d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath * java.util.zip.Deflater#setStrategy(int) 703d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath */ 704d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath public void test_setStrategyI() throws Exception { 705d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath byte[] byteArray = new byte[100]; 706d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath InputStream inFile = Support_Resources.getStream("hyts_checkInput.txt"); 707d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath inFile.read(byteArray); 708d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath inFile.close(); 709d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 710d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath for (int i = 0; i < 3; i++) { 711d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath byte outPutBuf[] = new byte[500]; 712d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath MyDeflater mdefl = new MyDeflater(); 713d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 714d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath if (i == 0) { 715d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath mdefl.setStrategy(mdefl.getDefStrategy()); 716d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } else if (i == 1) { 717d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath mdefl.setStrategy(mdefl.getHuffman()); 718d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } else { 719d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath mdefl.setStrategy(mdefl.getFiltered()); 720d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 721d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 722d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath mdefl.setInput(byteArray); 723d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath while (!mdefl.needsInput()) { 724d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath mdefl.deflate(outPutBuf); 725d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 726d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath mdefl.finish(); 727d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath while (!mdefl.finished()) { 728d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath mdefl.deflate(outPutBuf); 729d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 730d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 731d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath if (i == 0) { 732d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // System.out.println(mdefl.getTotalOut()); 733d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // ran JDK and found that getTotalOut() = 86 for this particular 734d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // file 735d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath assertEquals("getTotalOut() for the default strategy did not correspond with JDK", 736d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 86, mdefl.getTotalOut()); 737d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } else if (i == 1) { 738d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // System.out.println(mdefl.getTotalOut()); 739d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // ran JDK and found that getTotalOut() = 100 for this 740d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // particular file 741d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath assertEquals("getTotalOut() for the Huffman strategy did not correspond with JDK", 742d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 100, mdefl.getTotalOut()); 743d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } else { 744d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // System.out.println(mdefl.getTotalOut()); 745d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // ran JDK and found that totalOut = 93 for this particular file 746d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath assertEquals("Total Out for the Filtered strategy did not correspond with JDK", 747d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 93, mdefl.getTotalOut()); 748d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 749d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath mdefl.end(); 750d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 751d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 752d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // Attempting to setStrategy to an invalid value 75327604018f783bf6354a13870b3e7785edca69b5fPaul Duffin Deflater defl = new Deflater(); 754d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath try { 755d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath defl.setStrategy(-412); 75627604018f783bf6354a13870b3e7785edca69b5fPaul Duffin fail("IllegalArgumentException not thrown when setting strategy to an invalid value."); 757d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } catch (IllegalArgumentException e) { 758d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 75927604018f783bf6354a13870b3e7785edca69b5fPaul Duffin defl.end(); 760d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 761d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 762d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath /** 763d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath * java.util.zip.Deflater#Deflater() 764d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath */ 765d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath public void test_Constructor() throws Exception { 766d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath byte[] byteArray = new byte[100]; 767d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath InputStream inFile = Support_Resources.getStream("hyts_checkInput.txt"); 768d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath inFile.read(byteArray); 769d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath inFile.close(); 770d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 771d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath Deflater defl = new Deflater(); 772d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath byte[] outPutBuf = new byte[500]; 773d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath defl.setInput(byteArray); 774d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath while (!defl.needsInput()) { 775d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath defl.deflate(outPutBuf); 776d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 777d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath defl.finish(); 778d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath while (!defl.finished()) { 779d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath defl.deflate(outPutBuf); 780d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 781d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath int totalOut = defl.getTotalOut(); 782d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath defl.end(); 783d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 784d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // creating a Deflater using the DEFAULT_COMPRESSION as the int 785d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath MyDeflater mdefl = new MyDeflater(); 78627604018f783bf6354a13870b3e7785edca69b5fPaul Duffin mdefl.end(); 78727604018f783bf6354a13870b3e7785edca69b5fPaul Duffin 788d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath mdefl = new MyDeflater(mdefl.getDefCompression()); 789d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath outPutBuf = new byte[500]; 790d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath mdefl.setInput(byteArray); 791d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath while (!mdefl.needsInput()) { 792d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath mdefl.deflate(outPutBuf); 793d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 794d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath mdefl.finish(); 795d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath while (!mdefl.finished()) { 796d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath mdefl.deflate(outPutBuf); 797d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 798d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath assertEquals(totalOut, mdefl.getTotalOut()); 799d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath mdefl.end(); 800d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 801d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 802d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath /** 803d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath * java.util.zip.Deflater#Deflater(int, boolean) 804d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath */ 805d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath public void test_ConstructorIZ() throws Exception { 806d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath byte byteArray[] = { 4, 5, 3, 2, 'a', 'b', 6, 7, 8, 9, 0, 's', '3', 807d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 'w', 'r' }; 808d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 809d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath Deflater defl = new Deflater(); 810d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath byte outPutBuf[] = new byte[500]; 811d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath defl.setLevel(2); 812d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath defl.setInput(byteArray); 813d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath while (!defl.needsInput()) { 814d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath defl.deflate(outPutBuf); 815d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 816d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath defl.finish(); 817d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath while (!defl.finished()) { 818d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath defl.deflate(outPutBuf); 819d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 820d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath int totalOut = defl.getTotalOut(); 821d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath defl.end(); 822d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 823d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath outPutBuf = new byte[500]; 824d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath defl = new Deflater(2, false); 825d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath defl.setInput(byteArray); 826d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath while (!defl.needsInput()) { 827d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath defl.deflate(outPutBuf); 828d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 829d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath defl.finish(); 830d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath while (!defl.finished()) { 831d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath defl.deflate(outPutBuf); 832d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 833d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath assertEquals(totalOut, defl.getTotalOut()); 834d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath defl.end(); 835d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 836d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath outPutBuf = new byte[500]; 837d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath defl = new Deflater(2, true); 838d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath defl.setInput(byteArray); 839d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath while (!defl.needsInput()) { 840d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath defl.deflate(outPutBuf); 841d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 842d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath defl.finish(); 843d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath while (!defl.finished()) { 844d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath defl.deflate(outPutBuf); 845d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 846d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath assertTrue( 847d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath "getTotalOut() should not be equal comparing two Deflaters with different header options.", 848d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath defl.getTotalOut() != totalOut); 849d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath defl.end(); 850d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 851d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath byte outPutInf[] = new byte[500]; 852d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath Inflater infl = new Inflater(true); 853d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath while (!infl.finished()) { 854d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath if (infl.needsInput()) { 855d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath infl.setInput(outPutBuf); 856d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 857d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath infl.inflate(outPutInf); 858d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 859d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath for (int i = 0; i < byteArray.length; i++) { 860d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath assertEquals(byteArray[i], outPutInf[i]); 861d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 862d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath assertEquals("final decompressed data contained more bytes than original - constructorIZ", 863d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 0, outPutInf[byteArray.length]); 864d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath infl.end(); 865d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 866d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath infl = new Inflater(false); 867d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath outPutInf = new byte[500]; 868d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath int r = 0; 869d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath try { 870d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath while (!infl.finished()) { 871d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath if (infl.needsInput()) { 872d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath infl.setInput(outPutBuf); 873d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 874d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath infl.inflate(outPutInf); 875d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 876d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } catch (DataFormatException e) { 877d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath r = 1; 878d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 87927604018f783bf6354a13870b3e7785edca69b5fPaul Duffin infl.end(); 880d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath assertEquals("header option did not correspond", 1, r); 881d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 882d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // testing boundaries 88327604018f783bf6354a13870b3e7785edca69b5fPaul Duffin Deflater boundDefl = new Deflater(); 884d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath try { 885d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // Level must be between 0-9 886d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath boundDefl.setLevel(-2); 887d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath fail("IllegalArgumentException not thrown when setting level to a number < 0."); 888d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } catch (IllegalArgumentException e) { 889d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 890d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath try { 891d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath boundDefl.setLevel(10); 892d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath fail("IllegalArgumentException not thrown when setting level to a number > 9."); 893d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } catch (IllegalArgumentException e) { 894d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 89527604018f783bf6354a13870b3e7785edca69b5fPaul Duffin boundDefl.end(); 896d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath try { 89727604018f783bf6354a13870b3e7785edca69b5fPaul Duffin new Deflater(-2, true).end(); 898d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath fail("IllegalArgumentException not thrown when passing level to a number < 0."); 899d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } catch (IllegalArgumentException e) { 900d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 901d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 902d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath try { 90327604018f783bf6354a13870b3e7785edca69b5fPaul Duffin new Deflater(10, true).end(); 904d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath fail("IllegalArgumentException not thrown when passing level to a number > 9."); 905d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } catch (IllegalArgumentException e) { 906d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 907d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 908d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 909d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath /** 910d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath * java.util.zip.Deflater#Deflater(int) 911d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath */ 912d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath public void test_ConstructorI() throws Exception { 913d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath byte[] byteArray = new byte[100]; 914d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath InputStream inFile = Support_Resources.getStream("hyts_checkInput.txt"); 915d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath inFile.read(byteArray); 916d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath inFile.close(); 917d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 918d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath byte outPutBuf[] = new byte[500]; 919d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath Deflater defl = new Deflater(3); 920d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath defl.setInput(byteArray); 921d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath while (!defl.needsInput()) { 922d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath defl.deflate(outPutBuf); 923d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 924d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath defl.finish(); 925d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath while (!defl.finished()) { 926d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath defl.deflate(outPutBuf); 927d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 928d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath int totalOut = defl.getTotalOut(); 929d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath defl.end(); 930d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 931d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // test to see if the compression ratio is the same as setting the level 932d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // on a deflater 933d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath outPutBuf = new byte[500]; 934d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath defl = new Deflater(); 935d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath defl.setLevel(3); 936d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath defl.setInput(byteArray); 937d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath while (!defl.needsInput()) { 938d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath defl.deflate(outPutBuf); 939d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 940d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath defl.finish(); 941d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath while (!defl.finished()) { 942d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath defl.deflate(outPutBuf); 943d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 944d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath assertEquals(totalOut, defl.getTotalOut()); 945d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath defl.end(); 946d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 947d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // testing boundaries 94827604018f783bf6354a13870b3e7785edca69b5fPaul Duffin Deflater boundDefl = new Deflater(); 949d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath try { 950d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // Level must be between 0-9 951d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath boundDefl.setLevel(-2); 952d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath fail("IllegalArgumentException not thrown when setting level to a number < 0."); 953d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } catch (IllegalArgumentException e) { 954d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 955d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath try { 956d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath boundDefl.setLevel(10); 957d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath fail("IllegalArgumentException not thrown when setting level to a number > 9."); 958d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } catch (IllegalArgumentException e) { 959d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 96027604018f783bf6354a13870b3e7785edca69b5fPaul Duffin boundDefl.end(); 961d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 962d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 963d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath private void helper_end_test(Deflater defl, String desc) { 964d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // Help tests for test_end() and test_reset(). 965d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath byte byteArray[] = { 5, 2, 3, 7, 8 }; 966d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 967d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // Methods where we expect IllegalStateException or NullPointerException 968d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // to be thrown 969d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath try { 970d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath defl.getTotalOut(); 971d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath fail("defl.getTotalOut() can still be used after " + desc 972d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath + " is called in test_" + desc); 973d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } catch (IllegalStateException e) { 974d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } catch (NullPointerException e) { 975d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 976d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath try { 977d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath defl.getTotalIn(); 978d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath fail("defl.getTotalIn() can still be used after " + desc 979d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath + " is called in test_" + desc); 980d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } catch (IllegalStateException e) { 981d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } catch (NullPointerException e) { 982d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 983d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath try { 984d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath defl.getAdler(); 985d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath fail("defl.getAdler() can still be used after " + desc 986d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath + " is called in test_" + desc); 987d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } catch (IllegalStateException e) { 988d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } catch (NullPointerException e) { 989d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 990d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath try { 991d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath byte[] dict = { 'a', 'b', 'c' }; 992d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath defl.setDictionary(dict); 993d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath fail("defl.setDictionary() can still be used after " + desc 994d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath + " is called in test_" + desc); 995d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } catch (IllegalStateException e) { 996d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } catch (NullPointerException e) { 997d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 998d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath try { 999d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath defl.getTotalIn(); 1000d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath fail("defl.getTotalIn() can still be used after " + desc 1001d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath + " is called in test_" + desc); 1002d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } catch (IllegalStateException e) { 1003d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } catch (NullPointerException e) { 1004d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 1005d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath try { 1006d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath defl.getTotalIn(); 1007d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath fail("defl.getTotalIn() can still be used after " + desc 1008d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath + " is called in test_" + desc); 1009d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } catch (IllegalStateException e) { 1010d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } catch (NullPointerException e) { 1011d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 1012d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath try { 1013d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath defl.deflate(byteArray); 1014d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath fail("defl.deflate() can still be used after " + desc 1015d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath + " is called in test_" + desc); 1016d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } catch (IllegalStateException e) { 1017d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } catch (NullPointerException e) { 1018d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 1019d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 1020d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // Methods where we expect NullPointerException to be thrown 1021d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath try { 1022d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath defl.reset(); 1023d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath fail("defl.reset() can still be used after " + desc 1024d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath + " is called in test_" + desc); 1025d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } catch (NullPointerException expected) { 1026d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } catch (IllegalStateException expected) { 1027d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 1028d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 1029d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // Methods where we expect NullPointerException to be thrown 1030d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath try { 1031d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath defl.getBytesRead(); 1032d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath fail("defl.reset() can still be used after " + desc 1033d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath + " is called in test_" + desc); 1034d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } catch (NullPointerException expected) { 1035d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } catch (IllegalStateException expected) { 1036d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 1037d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 1038d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // Methods where we expect NullPointerException to be thrown 1039d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath try { 1040d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath defl.getBytesWritten(); 1041d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath fail("defl.getBytesWritten() can still be used after " + desc 1042d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath + " is called in test_" + desc); 1043d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } catch (NullPointerException expected) { 1044d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } catch (IllegalStateException expected) { 1045d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 1046d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 1047d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // Methods that should be allowed to be called after end() is called 1048d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath defl.needsInput(); 1049d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath defl.setStrategy(1); 1050d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath defl.setLevel(1); 1051d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath defl.end(); 1052d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 1053d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // Methods where exceptions should be thrown 1054d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath String vendor = System.getProperty("java.vendor"); 1055d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath if (vendor.indexOf("IBM") != -1) { 1056d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath try { 1057d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath defl.setInput(byteArray); 1058d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath fail("defl.setInput() can still be used after " + desc 1059d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath + " is called in test_" + desc); 1060d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } catch (IllegalStateException e) { 1061d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 1062d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 1063d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 1064d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 1065d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath /** 1066d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath * java.util.zip.Deflater() 1067d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath */ 1068d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath public void test_needsDictionary() { 1069d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath Deflater inf = new Deflater(); 1070d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath assertEquals(0, inf.getTotalIn()); 1071d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath assertEquals(0, inf.getTotalOut()); 1072d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath assertEquals(0, inf.getBytesRead()); 1073d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath assertEquals(0, inf.getBytesWritten()); 107427604018f783bf6354a13870b3e7785edca69b5fPaul Duffin inf.end(); 1075d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 1076d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 1077d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath /** 1078d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath * @throws DataFormatException 1079d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath * @throws UnsupportedEncodingException 1080d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath * java.util.zip.Deflater#getBytesRead() 1081d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath */ 1082d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath public void test_getBytesRead() throws DataFormatException, 1083d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath UnsupportedEncodingException { 1084d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // Regression test for HARMONY-158 1085d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath Deflater def = new Deflater(); 1086d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath assertEquals(0, def.getTotalIn()); 1087d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath assertEquals(0, def.getTotalOut()); 1088d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath assertEquals(0, def.getBytesRead()); 1089d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // Encode a String into bytes 1090d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath String inputString = "blahblahblah??"; 1091d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath byte[] input = inputString.getBytes("UTF-8"); 1092d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 1093d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // Compress the bytes 1094d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath byte[] output = new byte[100]; 1095d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath def.setInput(input); 1096d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath def.finish(); 1097d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath int compressedDataLength = def.deflate(output); 1098d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath assertEquals(14, def.getTotalIn()); 1099d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath assertEquals(compressedDataLength, def.getTotalOut()); 1100d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath assertEquals(14, def.getBytesRead()); 110127604018f783bf6354a13870b3e7785edca69b5fPaul Duffin def.end(); 1102d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 1103d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 1104d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath /** 1105d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath * @throws DataFormatException 1106d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath * @throws UnsupportedEncodingException 1107d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath * java.util.zip.Deflater#getBytesRead() 1108d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath */ 1109d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath public void test_getBytesWritten() throws DataFormatException, 1110d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath UnsupportedEncodingException { 1111d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // Regression test for HARMONY-158 1112d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath Deflater def = new Deflater(); 1113d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath assertEquals(0, def.getTotalIn()); 1114d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath assertEquals(0, def.getTotalOut()); 1115d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath assertEquals(0, def.getBytesWritten()); 1116d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // Encode a String into bytes 1117d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath String inputString = "blahblahblah??"; 1118d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath byte[] input = inputString.getBytes("UTF-8"); 1119d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 1120d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // Compress the bytes 1121d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath byte[] output = new byte[100]; 1122d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath def.setInput(input); 1123d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath def.finish(); 1124d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath int compressedDataLength = def.deflate(output); 1125d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath assertEquals(14, def.getTotalIn()); 1126d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath assertEquals(compressedDataLength, def.getTotalOut()); 1127d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath assertEquals(compressedDataLength, def.getBytesWritten()); 112827604018f783bf6354a13870b3e7785edca69b5fPaul Duffin def.end(); 1129d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 1130d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 1131d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath //Regression Test for HARMONY-2481 1132d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath public void test_deflate_beforeSetInput() throws Exception { 1133d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath Deflater deflater = new Deflater(); 1134d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath deflater.finish(); 1135d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath byte[] buffer = new byte[1024]; 1136d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath assertEquals(8, deflater.deflate(buffer)); 1137d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath byte[] expectedBytes = { 120, -100, 3, 0, 0, 0, 0, 1 }; 1138d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath for (int i = 0; i < expectedBytes.length; i++) { 1139d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath assertEquals(expectedBytes[i], buffer[i]); 1140d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 114127604018f783bf6354a13870b3e7785edca69b5fPaul Duffin deflater.end(); 1142d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 1143d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath} 1144