Package org.apache.harmony.archive.tests.java.util.zip

Source Code of org.apache.harmony.archive.tests.java.util.zip.InflaterInputStreamTest$MyInflaterInputStream

/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements.  See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You 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 org.apache.harmony.archive.tests.java.util.zip;

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.EOFException;
import java.io.IOException;
import java.io.InputStream;
import java.io.File;
import java.io.FileInputStream;
import java.util.zip.DeflaterOutputStream;
import java.util.zip.Inflater;
import java.util.zip.InflaterInputStream;

import junit.framework.TestCase;
import tests.support.resource.Support_Resources;

public class InflaterInputStreamTest extends TestCase {

  // files hyts_constru(O),hyts_constru(OD),hyts_constru(ODI) needs to be
  // included as resources
  byte outPutBuf[] = new byte[500];

  class MyInflaterInputStream extends InflaterInputStream {
    MyInflaterInputStream(InputStream in) {
      super(in);
    }

    MyInflaterInputStream(InputStream in, Inflater infl) {
      super(in, infl);
    }

    MyInflaterInputStream(InputStream in, Inflater infl, int size) {
      super(in, infl, size);
    }

    void myFill() throws IOException {
      fill();
    }
  }

  /**
   * @tests java.util.zip.InflaterInputStream#InflaterInputStream(java.io.InputStream)
   */
  public void test_ConstructorLjava_io_InputStream() throws IOException {
      //FIXME This test doesn't pass in Harmony classlib or Sun 5.0_7 RI
        /*
    int result = 0;
    int buffer[] = new int[500];
    InputStream infile = Support_Resources
        .getStream("hyts_constru(O).txt");

    InflaterInputStream inflatIP = new InflaterInputStream(infile);

    int i = 0;
    while ((result = inflatIP.read()) != -1) {
      buffer[i] = result;
      i++;
    }
    inflatIP.close();
        */
  }

  /**
   * @tests java.util.zip.InflaterInputStream#InflaterInputStream(java.io.InputStream,
   *        java.util.zip.Inflater)
   */
  public void test_ConstructorLjava_io_InputStreamLjava_util_zip_Inflater() throws IOException {
    byte byteArray[] = new byte[100];
    InputStream infile = Support_Resources.getStream("hyts_constru(OD).txt");
    Inflater inflate = new Inflater();
    InflaterInputStream inflatIP = new InflaterInputStream(infile,
        inflate);

    inflatIP.read(byteArray, 0, 5);// only suppose to read in 5 bytes
    inflatIP.close();
  }

  /**
   * @tests java.util.zip.InflaterInputStream#InflaterInputStream(java.io.InputStream,
   *        java.util.zip.Inflater, int)
   */
  public void test_ConstructorLjava_io_InputStreamLjava_util_zip_InflaterI() throws IOException {
    int result = 0;
    int buffer[] = new int[500];
    InputStream infile = Support_Resources.getStream("hyts_constru(ODI).txt");
    Inflater inflate = new Inflater();
    InflaterInputStream inflatIP = new InflaterInputStream(infile,
        inflate, 1);

    int i = 0;
    while ((result = inflatIP.read()) != -1) {
      buffer[i] = result;
      i++;
    }
    inflatIP.close();
  }

    /**
     * @tests java.util.zip.InflaterInputStream#mark(int)
     */
    public void test_markI() {
        InputStream is = new ByteArrayInputStream(new byte[10]);
        InflaterInputStream iis = new InflaterInputStream(is);
        // mark do nothing, do no check
        iis.mark(0);
        iis.mark(-1);
        iis.mark(10000000);
    }

    /**
     * @tests java.util.zip.InflaterInputStream#markSupported()
     */
    public void test_markSupported() {
        InputStream is = new ByteArrayInputStream(new byte[10]);
        InflaterInputStream iis = new InflaterInputStream(is);
        assertFalse(iis.markSupported());
        assertTrue(is.markSupported());
    }

  /**
     * @tests java.util.zip.InflaterInputStream#read()
     */
  public void test_read() throws IOException {
    int result = 0;
    int buffer[] = new int[500];
    byte orgBuffer[] = { 1, 3, 4, 7, 8 };
    InputStream infile = Support_Resources
        .getStream("hyts_constru(OD).txt");
    Inflater inflate = new Inflater();
    InflaterInputStream inflatIP = new InflaterInputStream(infile,
        inflate);

    int i = 0;
    while ((result = inflatIP.read()) != -1) {
      buffer[i] = result;
      i++;
    }
    inflatIP.close();

    for (int j = 0; j < orgBuffer.length; j++) {
      assertTrue(
        "original compressed data did not equal decompressed data",
        buffer[j] == orgBuffer[j]);
    }
  }

    public void testAvailableNonEmptySource() throws Exception {
        // this byte[] is a deflation of these bytes: { 1, 3, 4, 6 }
        byte[] deflated = { 72, -119, 99, 100, 102, 97, 3, 0, 0, 31, 0, 15, 0 };
        InputStream in = new InflaterInputStream(new ByteArrayInputStream(deflated));
        // InflaterInputStream.available() returns either 1 or 0, even though
        // that contradicts the behavior defined in InputStream.available()
        assertEquals(1, in.read());
        assertEquals(1, in.available());
        assertEquals(3, in.read());
        assertEquals(1, in.available());
        assertEquals(4, in.read());
        assertEquals(1, in.available());
        assertEquals(6, in.read());
        assertEquals(0, in.available());
        assertEquals(-1, in.read());
        assertEquals(-1, in.read());
    }

    public void testAvailableSkip() throws Exception {
        // this byte[] is a deflation of these bytes: { 1, 3, 4, 6 }
        byte[] deflated = { 72, -119, 99, 100, 102, 97, 3, 0, 0, 31, 0, 15, 0 };
        InputStream in = new InflaterInputStream(new ByteArrayInputStream(deflated));
        assertEquals(1, in.available());
        assertEquals(4, in.skip(4));
        assertEquals(0, in.available());
    }

    public void testAvailableEmptySource() throws Exception {
        // this byte[] is a deflation of the empty file
        byte[] deflated = { 120, -100, 3, 0, 0, 0, 0, 1 };
        InputStream in = new InflaterInputStream(new ByteArrayInputStream(deflated));
        assertEquals(-1, in.read());
        assertEquals(-1, in.read());
        assertEquals(0, in.available());
    }

  /**
   * @tests java.util.zip.InflaterInputStream#read(byte[], int, int)
   */
  public void test_read$BII() throws IOException{
        byte[] test = new byte[507];
        for (int i = 0; i < 256; i++) {
            test[i] = (byte) i;
        }
        for (int i = 256; i < test.length; i++) {
            test[i] = (byte) (256 - i);
        }
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        DeflaterOutputStream dos = new DeflaterOutputStream(baos);
        dos.write(test);
        dos.close();
        InputStream is = new ByteArrayInputStream(baos.toByteArray());
        InflaterInputStream iis = new InflaterInputStream(is);
        byte[] outBuf = new byte[530];
        int result = 0;
        while (true) {
            result = iis.read(outBuf, 0, 5);
            if (result == -1) {
                //"EOF was reached";
                break;
            }
        }
        try {
            iis.read(outBuf, -1, 10);
            fail("should throw IOOBE.");
        } catch (IndexOutOfBoundsException e) {
            // expected;
        }
  }

    public void test_read$BII2() throws IOException {
        File resources = Support_Resources.createTempFolder();
        Support_Resources.copyFile(resources, null, "Broken_manifest.jar");
        FileInputStream fis = new FileInputStream(new File(resources,
                "Broken_manifest.jar"));
        InflaterInputStream iis = new InflaterInputStream(fis);
        byte[] outBuf = new byte[530];

        iis.close();
        try {
            iis.read(outBuf, 0, 5);
            fail("IOException expected");
        } catch (IOException ee) {
            // expected.
        }
    }

    public void test_read$BII3() throws IOException {
        File resources = Support_Resources.createTempFolder();
        Support_Resources.copyFile(resources, null, "Broken_manifest.jar");
        FileInputStream fis = new FileInputStream(new File(resources,
                "Broken_manifest.jar"));
        InflaterInputStream iis = new InflaterInputStream(fis);
        byte[] outBuf = new byte[530];

        try {
            iis.read();
            fail("IOException expected.");
        } catch (IOException ee) {
            // expected
        }
    }

    /**
     * @tests java.util.zip.InflaterInputStream#reset()
     */
    public void test_reset() {
        InputStream is = new ByteArrayInputStream(new byte[10]);
        InflaterInputStream iis = new InflaterInputStream(is);
        try {
            iis.reset();
            fail("Should throw IOException");
        } catch (IOException e) {
            // correct
        }
    }
       
  /**
   * @tests java.util.zip.InflaterInputStream#skip(long)
   */
  public void test_skipJ() throws IOException {
    InputStream is = Support_Resources.getStream("hyts_available.tst");
    InflaterInputStream iis = new InflaterInputStream(is);

    // Tests for skipping a negative number of bytes.
    try {
      iis.skip(-3);
      fail("IllegalArgumentException not thrown");
    } catch (IllegalArgumentException e) {
            // Expected
    }
    assertEquals("Incorrect Byte Returned.", 5, iis.read());

    try {
      iis.skip(Integer.MIN_VALUE);
      fail("IllegalArgumentException not thrown");
    } catch (IllegalArgumentException e) {
            // Expected
    }
    assertEquals("Incorrect Byte Returned.", 4, iis.read());

    // Test to make sure the correct number of bytes were skipped
    assertEquals("Incorrect Number Of Bytes Skipped.", 3, iis.skip(3));

    // Test to see if the number of bytes skipped returned is true.
    assertEquals("Incorrect Byte Returned.", 7, iis.read());

    assertEquals("Incorrect Number Of Bytes Skipped.", 0, iis.skip(0));
    assertEquals("Incorrect Byte Returned.", 0, iis.read());

    // Test for skipping more bytes than available in the stream
    assertEquals("Incorrect Number Of Bytes Skipped.", 2, iis.skip(4));
    assertEquals("Incorrect Byte Returned.", -1, iis.read());
    iis.close();
  }

  /**
   * @tests java.util.zip.InflaterInputStream#skip(long)
   */
  public void test_skipJ2() throws IOException {
    int result = 0;
    int buffer[] = new int[100];
    byte orgBuffer[] = { 1, 3, 4, 7, 8 };

        // testing for negative input to skip
    InputStream infile = Support_Resources
        .getStream("hyts_constru(OD).txt");
    Inflater inflate = new Inflater();
    InflaterInputStream inflatIP = new InflaterInputStream(infile,
        inflate, 10);
    long skip;
    try {
      skip = inflatIP.skip(Integer.MIN_VALUE);
      fail("Expected IllegalArgumentException when skip() is called with negative parameter");
    } catch (IllegalArgumentException e) {
            // Expected
    }
    inflatIP.close();

    // testing for number of bytes greater than input.
    InputStream infile2 = Support_Resources
        .getStream("hyts_constru(OD).txt");
    InflaterInputStream inflatIP2 = new InflaterInputStream(infile2);

    // looked at how many bytes the skip skipped. It is
    // 5 and its supposed to be the entire input stream.

    skip = inflatIP2.skip(Integer.MAX_VALUE);
    // System.out.println(skip);
    assertEquals("method skip() returned wrong number of bytes skipped",
        5, skip);

    // test for skipping of 2 bytes
    InputStream infile3 = Support_Resources
        .getStream("hyts_constru(OD).txt");
    InflaterInputStream inflatIP3 = new InflaterInputStream(infile3);
    skip = inflatIP3.skip(2);
    assertEquals("the number of bytes returned by skip did not correspond with its input parameters",
        2, skip);
    int i = 0;
    result = 0;
    while ((result = inflatIP3.read()) != -1) {
      buffer[i] = result;
      i++;
    }
    inflatIP2.close();

    for (int j = 2; j < orgBuffer.length; j++) {
      assertTrue(
        "original compressed data did not equal decompressed data",
        buffer[j - 2] == orgBuffer[j]);
    }
  }

  /**
   * @tests java.util.zip.InflaterInputStream#available()
   */
  public void test_available() throws IOException {
    InputStream is = Support_Resources.getStream("hyts_available.tst");
    InflaterInputStream iis = new InflaterInputStream(is);

        int available;
        for (int i = 0; i < 11; i++) {
            iis.read();
            available = iis.available();
            if (available == 0) {
                assertEquals("Expected no more bytes to read", -1, iis.read());
            } else {
                assertEquals("Bytes Available Should Return 1.", 1, available);
            }
        }

    iis.close();
    try {
      iis.available();
      fail("available after close should throw IOException.");
    } catch (IOException e) {
            // Expected
    }
  }

  /**
   * @tests java.util.zip.InflaterInputStream#close()
   */
  public void test_close() throws IOException {
    InflaterInputStream iin = new InflaterInputStream(
        new ByteArrayInputStream(new byte[0]));
    iin.close();

        // test for exception
    iin.close();
  }
}
TOP

Related Classes of org.apache.harmony.archive.tests.java.util.zip.InflaterInputStreamTest$MyInflaterInputStream

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.