1f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes/*
2adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Licensed to the Apache Software Foundation (ASF) under one or more
3adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * contributor license agreements.  See the NOTICE file distributed with
4adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * this work for additional information regarding copyright ownership.
5adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * The ASF licenses this file to You under the Apache License, Version 2.0
6adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * (the "License"); you may not use this file except in compliance with
7adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the License.  You may obtain a copy of the License at
8f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes *
9adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *     http://www.apache.org/licenses/LICENSE-2.0
10f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes *
11adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Unless required by applicable law or agreed to in writing, software
12adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS,
13adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * See the License for the specific language governing permissions and
15adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * limitations under the License.
16adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */
17adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
18adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpackage org.apache.harmony.security.tests.java.security;
19adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
20adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.io.ByteArrayInputStream;
21adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.io.IOException;
22adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.DigestInputStream;
23adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.MessageDigest;
24adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.NoSuchAlgorithmException;
25adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport tests.support.Support_ASimpleInputStream;
26adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
27adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpublic class DigestInputStream2Test extends junit.framework.TestCase {
28adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
29adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    ByteArrayInputStream inStream;
30adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
31adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    ByteArrayInputStream inStream1;
32adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
33adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    MessageDigest digest;
34adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
35adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
36a3de55ddf81f95c7c0fc1b8767ccb1ecfa251c83Brian Carlstrom     * java.security.DigestInputStream#DigestInputStream(java.io.InputStream,
37adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *        java.security.MessageDigest)
38adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
39adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_ConstructorLjava_io_InputStreamLjava_security_MessageDigest() {
40adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // Test for method java.security.DigestInputStream(java.io.InputStream,
41adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // java.security.MessageDigest)
42adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        DigestInputStream dis = new DigestInputStream(inStream, digest);
43adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertNotNull("Constructor returned null instance", dis);
44adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
45adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
46adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
47a3de55ddf81f95c7c0fc1b8767ccb1ecfa251c83Brian Carlstrom     * java.security.DigestInputStream#getMessageDigest()
48adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
49adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_getMessageDigest() {
50adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // Test for method java.security.MessageDigest
51adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // java.security.DigestInputStream.getMessageDigest()
52adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        DigestInputStream dis = new DigestInputStream(inStream, digest);
53adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("getMessageDigest returned a bogus result", digest, dis
54adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                .getMessageDigest());
55adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
56adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
57adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
58a3de55ddf81f95c7c0fc1b8767ccb1ecfa251c83Brian Carlstrom     * java.security.DigestInputStream#on(boolean)
59adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
60adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_onZ() throws Exception {
61adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // Test for method void java.security.DigestInputStream.on(boolean)
62adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        MessageDigest originalDigest = (MessageDigest) (digest.clone());
63adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        MessageDigest noChangeDigest = (MessageDigest) (digest.clone());
64adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        DigestInputStream dis = new DigestInputStream(inStream, noChangeDigest);
65adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // turn off processing
66adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        dis.on(false);
67adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // read some data
68adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        int c = dis.read();
69adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals('T', c);
70adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
71adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // make sure the digest for the part where it was off has not
72adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // changed
73adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue("MessageDigest changed even though processing was off",
74adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                MessageDigest.isEqual(noChangeDigest.digest(), originalDigest
75adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                        .digest()));
76adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        MessageDigest changeDigest = (MessageDigest) (digest.clone());
77adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        dis = new DigestInputStream(inStream, digest);
78adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
79adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // turn on processing
80adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        dis.on(true);
81adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        c = dis.read();
82adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals('h', c);
83adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
84adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // make sure the digest has changed
85adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue("MessageDigest did not change with processing on",
86adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                !MessageDigest.isEqual(digest.digest(), changeDigest.digest()));
87adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
88adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
89adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
90a3de55ddf81f95c7c0fc1b8767ccb1ecfa251c83Brian Carlstrom     * java.security.DigestInputStream#read()
91adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
92adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_read() throws IOException {
93adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // Test for method int java.security.DigestInputStream.read()
94adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        DigestInputStream dis = new DigestInputStream(inStream, digest);
95adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
96adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // read and compare the data that the inStream has
97adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        int c;
98adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        while ((c = dis.read()) > -1) {
99adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            int d = inStream1.read();
100adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertEquals(d, c);
101adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }// end while
102adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
103adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
104adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
105a3de55ddf81f95c7c0fc1b8767ccb1ecfa251c83Brian Carlstrom     * java.security.DigestInputStream#read(byte[], int, int)
106adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
107adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_read$BII() throws IOException {
108adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // Test for method int java.security.DigestInputStream.read(byte [],
109adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // int, int)
110adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        DigestInputStream dis = new DigestInputStream(inStream, digest);
111adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        int bytesToRead = inStream.available();
112adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        byte buf1[] = new byte[bytesToRead + 5];
113adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        byte buf2[] = new byte[bytesToRead + 5];
114adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // make sure we're actually reading some data
115adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue("No data to read for this test", bytesToRead>0);
116f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
117adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // read and compare the data that the inStream has
118adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        int bytesRead1 = dis.read(buf1, 5, bytesToRead);
119adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        int bytesRead2 = inStream1.read(buf2, 5, bytesToRead);
120adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("Didn't read the same from each stream", bytesRead1,
121adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                bytesRead2);
122adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("Didn't read the entire", bytesRead1, bytesToRead);
123adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // compare the arrays
124adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        boolean same = true;
125adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        for (int i = 0; i < bytesToRead + 5; i++) {
126adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            if (buf1[i] != buf2[i]) {
127adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                same = false;
128adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            }
129f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes        }// end for
130adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue("Didn't get the same data", same);
131adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
132adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
133adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
134a3de55ddf81f95c7c0fc1b8767ccb1ecfa251c83Brian Carlstrom     * java.security.DigestInputStream#read(byte[], int, int)
135adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
136adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_read$BII_Exception() throws IOException {
137adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        DigestInputStream is = new DigestInputStream(inStream, digest);
138adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        byte[] buf = null;
139adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
140adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            is.read(buf, -1, 0);
141adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Test 1: NullPointerException expected.");
142adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (NullPointerException e) {
143adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // Expected.
144f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes        }
145adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
146f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes        buf = new byte[1000];
147adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
148adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            is.read(buf, -1, 0);
149adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Test 2: IndexOutOfBoundsException expected.");
150adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IndexOutOfBoundsException e) {
151adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // Expected.
152adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
153adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
154adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
155adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            is.read(buf, 0, -1);
156adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Test 3: IndexOutOfBoundsException expected.");
157adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IndexOutOfBoundsException e) {
158adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // Expected.
159f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes        }
160f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
161adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
162adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            is.read(buf, -1, -1);
163adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Test 4: IndexOutOfBoundsException expected.");
164adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IndexOutOfBoundsException e) {
165adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // Expected.
166f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes        }
167adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
168adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
169adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            is.read(buf, 0, 1001);
170adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Test 5: IndexOutOfBoundsException expected.");
171adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IndexOutOfBoundsException e) {
172adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // Expected.
173f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes        }
174adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
175adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
176adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            is.read(buf, 1001, 0);
177adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Test 6: IndexOutOfBoundsException expected.");
178adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IndexOutOfBoundsException e) {
179adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // Expected.
180f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes        }
181adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
182adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
183adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            is.read(buf, 500, 501);
184adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Test 7: IndexOutOfBoundsException expected.");
185adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IndexOutOfBoundsException e) {
186adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // Expected.
187f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes        }
188f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
189adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        is.close();
190f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
191adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Support_ASimpleInputStream sis = new Support_ASimpleInputStream(true);
192adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        is = new DigestInputStream(sis, digest);
193adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
194adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            is.read(buf, 0, 100);
195adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Test 9: IOException expected.");
196adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IOException e) {
197adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // Expected.
198adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
199adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        sis.throwExceptionOnNextUse = false;
200adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        is.close();
201adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
202f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
203adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
204a3de55ddf81f95c7c0fc1b8767ccb1ecfa251c83Brian Carlstrom     * java.security.DigestInputStream#setMessageDigest(java.security.MessageDigest)
205adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
206adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_setMessageDigestLjava_security_MessageDigest() {
207adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // Test for method void
208adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // java.security.DigestInputStream.setMessageDigest(java.security.MessageDigest)
209adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        DigestInputStream dis = new DigestInputStream(inStream, null);
210f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
211adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // make sure the digest is null when it's not been set
212adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertNull(
213adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                "Uninitialised MessageDigest should have been returned as null",
214adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                dis.getMessageDigest());
215adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        dis.setMessageDigest(digest);
216adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("Wrong MessageDigest was returned.", digest, dis
217adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                .getMessageDigest());
218adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
219adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
220adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
221adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Sets up the fixture, for example, open a network connection. This method
222adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * is called before a test is executed.
223adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
224adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    protected void setUp() {
225adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // create a ByteArrayInputStream to perform digesting on
226adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        inStream = new ByteArrayInputStream(
227adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                "This is a test string for digesting".getBytes());
228adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        inStream1 = new ByteArrayInputStream(
229adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                "This is a test string for digesting".getBytes());
230adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
231adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            digest = MessageDigest.getInstance("SHA-1");
232adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (NoSuchAlgorithmException e) {
233adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Unable to find SHA-1 algorithm");
234adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
235adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
2362f9e468ed4985edfd5e351faf2089d91e561e41dElliott Hughes}
237