private byte[] compressDecompressZlib( byte[] rawData, ZlibCompressor zlibCompressor, ZlibDecompressor zlibDecompressor) throws IOException { int cSize = 0; byte[] compressedByte = new byte[rawData.length]; byte[] decompressedRawData = new byte[rawData.length]; zlibCompressor.setInput(rawData, 0, rawData.length); zlibCompressor.finish(); while (!zlibCompressor.finished()) { cSize = zlibCompressor.compress(compressedByte, 0, compressedByte.length); } zlibCompressor.reset(); assertTrue(zlibDecompressor.getBytesWritten() == 0); assertTrue(zlibDecompressor.getBytesRead() == 0); assertTrue(zlibDecompressor.needsInput()); zlibDecompressor.setInput(compressedByte, 0, cSize); assertFalse(zlibDecompressor.needsInput()); while (!zlibDecompressor.finished()) { zlibDecompressor.decompress(decompressedRawData, 0, decompressedRawData.length); } assertTrue(zlibDecompressor.getBytesWritten() == rawData.length); assertTrue(zlibDecompressor.getBytesRead() == cSize); zlibDecompressor.reset(); assertTrue(zlibDecompressor.getRemaining() == 0); assertArrayEquals( "testZlibCompressorDecompressorWithConfiguration array equals error", rawData, decompressedRawData); return decompressedRawData; }