diff options
Diffstat (limited to 'tests/CoreTests/android/core/DeflateTest.java')
-rw-r--r-- | tests/CoreTests/android/core/DeflateTest.java | 199 |
1 files changed, 0 insertions, 199 deletions
diff --git a/tests/CoreTests/android/core/DeflateTest.java b/tests/CoreTests/android/core/DeflateTest.java deleted file mode 100644 index d68d697..0000000 --- a/tests/CoreTests/android/core/DeflateTest.java +++ /dev/null @@ -1,199 +0,0 @@ -/* - * 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 android.core; - -import junit.framework.TestCase; - -import java.io.UnsupportedEncodingException; -import java.util.zip.DataFormatException; -import java.util.zip.Deflater; -import java.util.zip.Inflater; -import android.test.suitebuilder.annotation.LargeTest; - -public class DeflateTest extends TestCase { - - @LargeTest - public void testDeflate() throws Exception { - simpleTest(); - - bigTest(0, 1738149618); - bigTest(1, 934350518); - bigTest(2, -532869390); - } - - /* - * Simple inflate/deflate test, taken from the reference docs for the - * Inflater/Deflater classes. - */ - private void simpleTest() - throws UnsupportedEncodingException, DataFormatException { - // Encode a String into bytes - String inputString = "blahblahblah??"; - byte[] input = inputString.getBytes("UTF-8"); - - // Compress the bytes - byte[] output = new byte[100]; - Deflater compresser = new Deflater(); - compresser.setInput(input); - compresser.finish(); - int compressedDataLength = compresser.deflate(output); - - // Decompress the bytes - Inflater decompresser = new Inflater(); - decompresser.setInput(output, 0, compressedDataLength); - byte[] result = new byte[100]; - int resultLength = decompresser.inflate(result); - - // Decode the bytes into a String - String outputString = new String(result, 0, resultLength, "UTF-8"); - - assertEquals(inputString, outputString); - assertEquals(compresser.getAdler(), decompresser.getAdler()); - - decompresser.end(); - } - - /* - * "step" determines how compressible the data is. - * - * Note we must set "nowrap" to false, or the Adler-32 doesn't get - * computed. - */ - private void bigTest(int step, int expectedAdler) - throws UnsupportedEncodingException, DataFormatException { - byte[] input = new byte[128 * 1024]; - byte[] comp = new byte[128 * 1024 + 512]; - byte[] output = new byte[128 * 1024 + 512]; - Inflater inflater = new Inflater(false); - Deflater deflater = new Deflater(Deflater.BEST_COMPRESSION, false); - - createSample(input, step); - - compress(deflater, input, comp); - expand(inflater, comp, (int) deflater.getBytesWritten(), output); - - assertEquals(inflater.getBytesWritten(), input.length); - assertEquals(deflater.getAdler(), inflater.getAdler()); - assertEquals(deflater.getAdler(), expectedAdler); - } - - /* - * Create a large data sample. - * stepStep = 0 --> >99% compression - * stepStep = 1 --> ~30% compression - * stepStep = 2 --> no compression - */ - private void createSample(byte[] sample, int stepStep) { - byte val, step; - int i, j, offset; - - assertTrue(sample.length >= 128 * 1024); - - 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; - } - } - - private static final int LOCAL_BUF_SIZE = 256; - - /* - * Compress all data in "in" to "out". We use a small window on input - * and output to exercise that part of the code. - * - * It's the caller's responsibility to ensure that "out" has enough - * space. - */ - private void compress(Deflater deflater, byte[] inBuf, byte[] outBuf) { - int inCount = inBuf.length; // use all - int inPosn; - int outPosn; - - inPosn = outPosn = 0; - - //System.out.println("### starting compress"); - - while (!deflater.finished()) { - int want = -1, got; - - // only read if the input buffer is empty - if (deflater.needsInput() && inCount != 0) { - want = (inCount < LOCAL_BUF_SIZE) ? inCount : LOCAL_BUF_SIZE; - - deflater.setInput(inBuf, inPosn, want); - - inCount -= want; - inPosn += want; - if (inCount == 0) { - deflater.finish(); - } - } - - // deflate to current position in output buffer - int compCount; - - compCount = deflater.deflate(outBuf, outPosn, LOCAL_BUF_SIZE); - outPosn += compCount; - - //System.out.println("Compressed " + want + ", output " + compCount); - } - } - - /* - * Expand data from "inBuf" to "outBuf". Uses a small window to better - * exercise the code. - */ - private void expand(Inflater inflater, byte[] inBuf, int inCount, - byte[] outBuf) throws DataFormatException { - int inPosn; - int outPosn; - - inPosn = outPosn = 0; - - //System.out.println("### starting expand, inCount is " + inCount); - - while (!inflater.finished()) { - int want = -1, got; - - // only read if the input buffer is empty - if (inflater.needsInput() && inCount != 0) { - want = (inCount < LOCAL_BUF_SIZE) ? inCount : LOCAL_BUF_SIZE; - - inflater.setInput(inBuf, inPosn, want); - - inCount -= want; - inPosn += want; - } - - // inflate to current position in output buffer - int compCount; - - compCount = inflater.inflate(outBuf, outPosn, LOCAL_BUF_SIZE); - outPosn += compCount; - - //System.out.println("Expanded " + want + ", output " + compCount); - } - } -} - |