/* * Copyright (C) 2008 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package libcore.java.util.zip; import junit.framework.TestCase; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.zip.GZIPInputStream; import java.util.zip.GZIPOutputStream; /** * Deflates and inflates some test data with GZipStreams */ public class OldAndroidGZIPStreamTest extends TestCase { public void testGZIPStream() throws Exception { ByteArrayOutputStream bytesOut = new ByteArrayOutputStream(); createGZIP(bytesOut); byte[] zipData; zipData = bytesOut.toByteArray(); /* FileOutputStream outFile = new FileOutputStream("/tmp/foo.gz"); outFile.write(zipData, 0, zipData.length); outFile.close(); */ /* FileInputStream inFile = new FileInputStream("/tmp/foo.gz"); int inputLength = inFile.available(); zipData = new byte[inputLength]; if (inFile.read(zipData) != inputLength) throw new RuntimeException(); inFile.close(); */ ByteArrayInputStream bytesIn = new ByteArrayInputStream(zipData); scanGZIP(bytesIn); } /* * stepStep == 0 --> >99% compression * stepStep == 1 --> ~30% compression * stepStep == 2 --> no compression */ static byte[] makeSampleFile(int stepStep) throws IOException { byte[] sample = new byte[128 * 1024]; byte val, step; int i, j, offset; val = 0; step = 1; offset = 0; for (i = 0; i < (128 * 1024) / 256; i++) { for (j = 0; j < 256; j++) { sample[offset++] = val; val += step; } step += stepStep; } return sample; } static void createGZIP(ByteArrayOutputStream bytesOut) throws IOException { GZIPOutputStream out = new GZIPOutputStream(bytesOut); try { byte[] input = makeSampleFile(1); out.write(input, 0, input.length); //out.finish(); } finally { out.close(); } } static void scanGZIP(ByteArrayInputStream bytesIn) throws IOException { GZIPInputStream in = new GZIPInputStream(bytesIn); try { ByteArrayOutputStream contents = new ByteArrayOutputStream(); byte[] buf = new byte[4096]; int len, totalLen = 0; while ((len = in.read(buf)) > 0) { contents.write(buf, 0, len); totalLen += len; } assertEquals(totalLen, 128 * 1024); } finally { in.close(); } } }