summaryrefslogtreecommitdiffstats
path: root/tests/CoreTests/android/core/DeflateTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'tests/CoreTests/android/core/DeflateTest.java')
-rw-r--r--tests/CoreTests/android/core/DeflateTest.java199
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);
- }
- }
-}
-