1d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath/* 2d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath * Licensed to the Apache Software Foundation (ASF) under one or more 3d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath * contributor license agreements. See the NOTICE file distributed with 4d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath * this work for additional information regarding copyright ownership. 5d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath * The ASF licenses this file to You under the Apache License, Version 2.0 6d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath * (the "License"); you may not use this file except in compliance with 7d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath * the License. You may obtain a copy of the License at 8d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath * 9d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath * http://www.apache.org/licenses/LICENSE-2.0 10d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath * 11d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath * Unless required by applicable law or agreed to in writing, software 12d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath * distributed under the License is distributed on an "AS IS" BASIS, 13d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath * See the License for the specific language governing permissions and 15d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath * limitations under the License. 16d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath */ 17d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamathpackage org.apache.harmony.tests.java.util.zip; 18d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 19d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamathimport java.io.File; 20d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamathimport java.io.FileInputStream; 21d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamathimport java.io.IOException; 22e10c61bb13373b95ba857cc3af60f94b9941ab9eNarayan Kamathimport java.io.InputStream; 23d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamathimport java.util.zip.CRC32; 24d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamathimport java.util.zip.CheckedInputStream; 25d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamathimport junit.framework.TestCase; 26d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamathimport tests.support.resource.Support_Resources; 27d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 28d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamathpublic class CheckedInputStreamTest extends TestCase { 29d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 30d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath /** 31d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath * java.util.zip.CheckedInputStream#CheckedInputStream(java.io.InputStream, 32d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath *java.util.zip.Checksum) 33d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath */ 34d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath public void test_ConstructorLjava_io_InputStreamLjava_util_zip_Checksum() throws Exception { 35d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath InputStream checkInput = Support_Resources.getStream("hyts_checkInput.txt"); 36d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath CheckedInputStream checkIn = new CheckedInputStream(checkInput, new CRC32()); 37d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath assertEquals("constructor of checkedInputStream has failed", 0, checkIn.getChecksum() 38d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath .getValue()); 39d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath checkInput.close(); 40d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 41d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 42d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath /** 43d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath * java.util.zip.CheckedInputStream#getChecksum() 44d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath */ 45d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath public void test_getChecksum() throws Exception { 46d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath byte outBuf[] = new byte[100]; 47e10c61bb13373b95ba857cc3af60f94b9941ab9eNarayan Kamath File f = File.createTempFile("CheckedInputStreamTest", ".txt"); 48e10c61bb13373b95ba857cc3af60f94b9941ab9eNarayan Kamath InputStream inEmp = new FileInputStream(f); 49d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath CheckedInputStream checkEmpty = new CheckedInputStream(inEmp, new CRC32()); 50d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath while (checkEmpty.read() >= 0) { 51d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 52d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath assertEquals("the checkSum value of an empty file is not zero", 0, checkEmpty 53d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath .getChecksum().getValue()); 54d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath inEmp.close(); 55d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 56d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // testing getChecksum for the file checkInput 57d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath InputStream checkInput = Support_Resources.getStream("hyts_checkInput.txt"); 58d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath CheckedInputStream checkIn = new CheckedInputStream(checkInput, new CRC32()); 59d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath while (checkIn.read() >= 0) { 60d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 61d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // ran JDK and found that the checkSum value of this is 2036203193 62d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // System.out.print(" " + checkIn.getChecksum().getValue()); 63d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath assertEquals("the checksum value is incorrect", 2036203193, checkIn.getChecksum() 64d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath .getValue()); 65d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath checkInput.close(); 66d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // testing getChecksum for file checkInput 67d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath checkInput = Support_Resources.getStream("hyts_checkInput.txt"); 68d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath CheckedInputStream checkIn2 = new CheckedInputStream(checkInput, new CRC32()); 69d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath checkIn2.read(outBuf, 0, 10); 70d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // ran JDK and found that the checkSum value of this is 2235765342 71d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // System.out.print(" " + checkIn2.getChecksum().getValue()); 72d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath assertEquals("the checksum value is incorrect", 2235765342L, checkIn2.getChecksum() 73d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath .getValue()); 74d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath checkInput.close(); 75d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 76d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 77d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath /** 78d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath * java.util.zip.CheckedInputStream#skip(long) 79d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath */ 80d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath public void test_skipJ() throws Exception { 81d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // testing that the return by skip is valid 82d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath InputStream checkInput = Support_Resources.getStream("hyts_checkInput.txt"); 83d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath CheckedInputStream checkIn = new CheckedInputStream(checkInput, new CRC32()); 84d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath long skipValue = 5; 85d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath assertEquals("the value returned by skip(n) is not the same as its parameter", 86d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath skipValue, checkIn.skip(skipValue)); 87d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath checkIn.skip(skipValue); 88d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // ran JDK and found the checkSum value is 2235765342 89d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // System.out.print(checkIn.getChecksum().getValue()); 90d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath assertEquals("checkSum value is not correct", 2235765342L, checkIn.getChecksum() 91d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath .getValue()); 92d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath assertEquals(0, checkIn.skip(0)); 93d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath checkInput.close(); 94d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 95d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 96d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath public void test_read() throws Exception { 97d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // testing that the return by skip is valid 98d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath InputStream checkInput = Support_Resources 99d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath .getStream("hyts_checkInput.txt"); 100d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath CheckedInputStream checkIn = new CheckedInputStream(checkInput, 101d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath new CRC32()); 102d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath checkIn.read(); 103d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath checkIn.close(); 104d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath try { 105d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath checkIn.read(); 106d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath fail("IOException expected."); 107d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } catch (IOException ee) { 108d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // expected 109d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 110d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath checkInput.close(); 111d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 112d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath 113d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath public void test_read$byteII() throws Exception { 114d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // testing that the return by skip is valid 115d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath InputStream checkInput = Support_Resources 116d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath .getStream("hyts_checkInput.txt"); 117d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath CheckedInputStream checkIn = new CheckedInputStream(checkInput, 118d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath new CRC32()); 119d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath byte buff[] = new byte[50]; 120d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath checkIn.read(buff, 10, 5); 121d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath checkIn.close(); 122d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath try { 123d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath checkIn.read(buff, 10, 5); 124d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath fail("IOException expected."); 125d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } catch (IOException ee) { 126d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath // expected 127d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 128d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath checkInput.close(); 129d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath } 130d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath} 131