/*
* 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.tests.java.util.zip;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.zip.Adler32;
import java.util.zip.CRC32;
import java.util.zip.CheckedOutputStream;
public class CheckedOutputStreamTest extends junit.framework.TestCase {
/**
* java.util.zip.CheckedOutputStream#CheckedOutputStream(java.io.OutputStream,
*java.util.zip.Checksum)
*/
public void test_ConstructorLjava_io_OutputStreamLjava_util_zip_Checksum() {
// test method java.util.zip.checkedOutputStream.constructor
try {
FileOutputStream outFile = new FileOutputStream(
File.createTempFile("CheckedOutputStreamTest", ".txt"));
CheckedOutputStream chkOut = new CheckedOutputStream(outFile,
new CRC32());
assertEquals("the checkSum value of the constructor is not 0", 0, chkOut
.getChecksum().getValue());
outFile.close();
} catch (IOException e) {
fail("Unable to find file");
} catch (SecurityException e) {
fail(
"file cannot be opened for writing due to security reasons");
}
}
/**
* java.util.zip.CheckedOutputStream#getChecksum()
*/
public void test_getChecksum() {
// test method java.util.zip.checkedOutputStream.getChecksum()
byte byteArray[] = { 1, 2, 3, 'e', 'r', 't', 'g', 3, 6 };
try {
FileOutputStream outFile = new FileOutputStream(
File.createTempFile("CheckedOutputStreamTest", ".txt"));
CheckedOutputStream chkOut = new CheckedOutputStream(outFile,
new Adler32());
chkOut.write(byteArray[4]);
// ran JDK and found that checkSum value is 7536755
// System.out.print(chkOut.getChecksum().getValue());
assertEquals("the checkSum value for writeI is incorrect", 7536755, chkOut
.getChecksum().getValue());
chkOut.getChecksum().reset();
chkOut.write(byteArray, 5, 4);
// ran JDK and found that checkSum value is 51708133
// System.out.print(" " +chkOut.getChecksum().getValue());
assertEquals("the checkSum value for writeBII is incorrect ", 51708133, chkOut
.getChecksum().getValue());
outFile.close();
} catch (IOException e) {
fail("Unable to find file");
} catch (SecurityException e) {
fail(
"file cannot be opened for writing due to security reasons");
}
}
/**
* java.util.zip.CheckedOutputStream#write(int)
*/
public void test_writeI() {
// test method java.util.zip.checkedOutputStream.writeI()
byte byteArray[] = { 1, 2, 3, 'e', 'r', 't', 'g', 3, 6 };
try {
FileOutputStream outFile = new FileOutputStream(
File.createTempFile("CheckedOutputStreamTest", ".txt"));
CheckedOutputStream chkOut = new CheckedOutputStream(outFile,
new CRC32());
for (byte element : byteArray) {
chkOut.write(element);
}
assertTrue(
"the checkSum value is zero, no bytes are written to the output file",
chkOut.getChecksum().getValue() != 0);
outFile.close();
} catch (IOException e) {
fail("Unable to find file");
} catch (SecurityException e) {
fail("File cannot be opened for writing due to security reasons");
}
}
/**
* java.util.zip.CheckedOutputStream#write(byte[], int, int)
*/
public void test_write$BII() {
// test method java.util.zip.checkOutputStream.writeBII()
byte byteArray[] = { 1, 2, 3, 'e', 'r', 't', 'g', 3, 6 };
try {
FileOutputStream outFile = new FileOutputStream(
File.createTempFile("CheckedOutputStreamTest", ".txt"));
CheckedOutputStream chkOut = new CheckedOutputStream(outFile,
new CRC32());
chkOut.write(byteArray, 4, 5);
assertTrue(
"the checkSum value is zero, no bytes are written to the output file",
chkOut.getChecksum().getValue() != 0);
int r = 0;
try {
chkOut.write(byteArray, 4, 6);
} catch (IndexOutOfBoundsException e) {
r = 1;
}
assertEquals("boundary check is not performed", 1, r);
outFile.close();
} catch (IOException e) {
fail("Unable to find file");
} catch (SecurityException e) {
fail(
"file cannot be opened for writing due to security reasons");
} catch (IndexOutOfBoundsException e) {
fail("Index for write is out of bounds");
}
}
}