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