blob: 9b23b5682730076a8e3ec113b1976aff14357725 [file] [log] [blame]
/*
* 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 dalvik.annotation.TestTargetClass;
import dalvik.annotation.TestTargets;
import dalvik.annotation.TestLevel;
import dalvik.annotation.TestTargetNew;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.zip.Checksum;
import java.util.zip.GZIPOutputStream;
@TestTargetClass(GZIPOutputStream.class)
public class GZIPOutputStreamTest extends junit.framework.TestCase {
class TestGZIPOutputStream extends GZIPOutputStream {
TestGZIPOutputStream(OutputStream out) throws IOException {
super(out);
}
TestGZIPOutputStream(OutputStream out, int size) throws IOException {
super(out, size);
}
Checksum getChecksum() {
return crc;
}
}
/**
* @tests java.util.zip.GZIPOutputStream#GZIPOutputStream(java.io.OutputStream)
*/
@TestTargetNew(
level = TestLevel.COMPLETE,
notes = "",
method = "GZIPOutputStream",
args = {java.io.OutputStream.class}
)
public void test_ConstructorLjava_io_OutputStream() {
try {
FileOutputStream outFile = new FileOutputStream(
File.createTempFile("GZIPOutCon", ".txt"));
TestGZIPOutputStream outGZIP = new TestGZIPOutputStream(outFile);
assertNotNull("the constructor for GZIPOutputStream is null",
outGZIP);
assertEquals("the CRC value of the outputStream is not zero", 0,
outGZIP.getChecksum().getValue());
outGZIP.close();
} catch (IOException e) {
fail("an IO error occured while trying to find the output file or creating GZIP constructor");
}
}
/**
* @tests java.util.zip.GZIPOutputStream#GZIPOutputStream(java.io.OutputStream,
* int)
*/
@TestTargetNew(
level = TestLevel.COMPLETE,
notes = "",
method = "GZIPOutputStream",
args = {java.io.OutputStream.class, int.class}
)
public void test_ConstructorLjava_io_OutputStreamI() {
try {
FileOutputStream outFile = new FileOutputStream(
File.createTempFile("GZIPOutCon", ".txt"));
TestGZIPOutputStream outGZIP = new TestGZIPOutputStream(outFile,
100);
assertNotNull("the constructor for GZIPOutputStream is null",
outGZIP);
assertEquals("the CRC value of the outputStream is not zero", 0,
outGZIP.getChecksum().getValue());
outGZIP.close();
} catch (IOException e) {
fail("an IO error occured while trying to find the output file or creating GZIP constructor");
}
}
/**
* @tests java.util.zip.GZIPOutputStream#finish()
*/
@TestTargetNew(
level = TestLevel.COMPLETE,
notes = "",
method = "finish",
args = {}
)
public void test_finish() {
// test method java.util.zip.GZIPOutputStream.finish()
byte byteArray[] = {3, 5, 2, 'r', 'g', 'e', 'f', 'd', 'e', 'w'};
TestGZIPOutputStream outGZIP = null;
FileOutputStream outFile = null;
try {
outFile = new FileOutputStream(
File.createTempFile("GZIPOutCon", ".txt"));
outGZIP = new TestGZIPOutputStream(outFile);
outGZIP.finish();
int r = 0;
try {
outGZIP.write(byteArray, 0, 1);
} catch (IOException e) {
r = 1;
}
assertEquals(
"GZIP instance can still be used after finish is called",
1, r);
outGZIP.close();
} catch (IOException e) {
fail("an IO error occured while trying to find the output file or creating GZIP constructor");
}
try {
outFile = new FileOutputStream("GZIPOutFinish.txt");
outGZIP = new TestGZIPOutputStream(outFile);
outFile.close();
outGZIP.finish();
fail("Expected IOException");
} catch (IOException e) {
// expected
}
}
/**
* @tests java.util.zip.GZIPOutputStream#close()
*/
@TestTargetNew(
level = TestLevel.PARTIAL_COMPLETE,
notes = "IOException checking missed.",
method = "close",
args = {}
)
public void test_close() {
// test method java.util.zip.GZIPOutputStream.close()
byte byteArray[] = {3, 5, 2, 'r', 'g', 'e', 'f', 'd', 'e', 'w'};
try {
FileOutputStream outFile = new FileOutputStream(
File.createTempFile("GZIPOutCon", ".txt"));
TestGZIPOutputStream outGZIP = new TestGZIPOutputStream(outFile);
outGZIP.close();
int r = 0;
try {
outGZIP.write(byteArray, 0, 1);
} catch (IOException e) {
r = 1;
}
assertEquals(
"GZIP instance can still be used after close is called", 1,
r);
} catch (IOException e) {
fail("an IO error occured while trying to find the output file or creating GZIP constructor");
}
}
/**
* @tests java.util.zip.GZIPOutputStream#write(byte[], int, int)
*/
@TestTargetNew(
level = TestLevel.COMPLETE,
notes = "",
method = "write",
args = {byte[].class, int.class, int.class}
)
public void test_write$BII() {
// test method java.util.zip.GZIPOutputStream.writeBII
byte byteArray[] = {3, 5, 2, 'r', 'g', 'e', 'f', 'd', 'e', 'w'};
TestGZIPOutputStream outGZIP = null;
try {
FileOutputStream outFile = new FileOutputStream(
File.createTempFile("GZIPOutCon", ".txt"));
outGZIP = new TestGZIPOutputStream(outFile);
outGZIP.write(byteArray, 0, 10);
// ran JDK and found this CRC32 value is 3097700292
// System.out.print(outGZIP.getChecksum().getValue());
assertEquals(
"the checksum value was incorrect result of write from GZIP",
3097700292L, outGZIP.getChecksum().getValue());
// test for boundary check
int r = 0;
try {
outGZIP.write(byteArray, 0, 11);
} catch (ArrayIndexOutOfBoundsException e) {
r = 1;
} catch (IndexOutOfBoundsException ee) {
r = 1;
}
assertEquals("out of bounds exception is not present", 1, r);
outGZIP.close();
} catch (IOException e) {
fail("an IO error occured while trying to find the output file or creating GZIP constructor");
}
try {
outGZIP.write(byteArray, 0, 10);
fail("Expected IOException");
} catch (IOException e) {
// expected
}
}
@Override
protected void setUp() {
}
@Override
protected void tearDown() {
try {
File dFile = new File("GZIPOutCon.txt");
dFile.delete();
File dFile2 = new File("GZIPOutFinish.txt");
dFile2.delete();
File dFile3 = new File("GZIPOutWrite.txt");
dFile3.delete();
File dFile4 = new File("GZIPOutClose2.txt");
dFile4.delete();
} catch (SecurityException e) {
fail("Cannot delete file for security reasons");
}
}
}