1858dd42310622fd1b77bfa0fbd85ec851b3925c1Jesse Wilson/* 2858dd42310622fd1b77bfa0fbd85ec851b3925c1Jesse Wilson * Copyright (C) 2010 The Android Open Source Project 3858dd42310622fd1b77bfa0fbd85ec851b3925c1Jesse Wilson * 4858dd42310622fd1b77bfa0fbd85ec851b3925c1Jesse Wilson * Licensed under the Apache License, Version 2.0 (the "License"); 5858dd42310622fd1b77bfa0fbd85ec851b3925c1Jesse Wilson * you may not use this file except in compliance with the License. 6858dd42310622fd1b77bfa0fbd85ec851b3925c1Jesse Wilson * You may obtain a copy of the License at 7858dd42310622fd1b77bfa0fbd85ec851b3925c1Jesse Wilson * 8858dd42310622fd1b77bfa0fbd85ec851b3925c1Jesse Wilson * http://www.apache.org/licenses/LICENSE-2.0 9858dd42310622fd1b77bfa0fbd85ec851b3925c1Jesse Wilson * 10858dd42310622fd1b77bfa0fbd85ec851b3925c1Jesse Wilson * Unless required by applicable law or agreed to in writing, software 11858dd42310622fd1b77bfa0fbd85ec851b3925c1Jesse Wilson * distributed under the License is distributed on an "AS IS" BASIS, 12858dd42310622fd1b77bfa0fbd85ec851b3925c1Jesse Wilson * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13858dd42310622fd1b77bfa0fbd85ec851b3925c1Jesse Wilson * See the License for the specific language governing permissions and 14858dd42310622fd1b77bfa0fbd85ec851b3925c1Jesse Wilson * limitations under the License. 15858dd42310622fd1b77bfa0fbd85ec851b3925c1Jesse Wilson */ 16858dd42310622fd1b77bfa0fbd85ec851b3925c1Jesse Wilson 17858dd42310622fd1b77bfa0fbd85ec851b3925c1Jesse Wilsonpackage libcore.java.io; 18858dd42310622fd1b77bfa0fbd85ec851b3925c1Jesse Wilson 19858dd42310622fd1b77bfa0fbd85ec851b3925c1Jesse Wilsonimport java.io.BufferedInputStream; 20858dd42310622fd1b77bfa0fbd85ec851b3925c1Jesse Wilsonimport java.io.DataInputStream; 21858dd42310622fd1b77bfa0fbd85ec851b3925c1Jesse Wilsonimport java.io.FilterInputStream; 22858dd42310622fd1b77bfa0fbd85ec851b3925c1Jesse Wilsonimport java.io.IOException; 23858dd42310622fd1b77bfa0fbd85ec851b3925c1Jesse Wilsonimport java.io.InputStream; 24858dd42310622fd1b77bfa0fbd85ec851b3925c1Jesse Wilsonimport java.io.LineNumberInputStream; 25858dd42310622fd1b77bfa0fbd85ec851b3925c1Jesse Wilsonimport java.io.PushbackInputStream; 26858dd42310622fd1b77bfa0fbd85ec851b3925c1Jesse Wilsonimport java.security.DigestInputStream; 27858dd42310622fd1b77bfa0fbd85ec851b3925c1Jesse Wilsonimport java.security.MessageDigest; 28858dd42310622fd1b77bfa0fbd85ec851b3925c1Jesse Wilsonimport java.security.NoSuchAlgorithmException; 29858dd42310622fd1b77bfa0fbd85ec851b3925c1Jesse Wilsonimport java.util.zip.CRC32; 30858dd42310622fd1b77bfa0fbd85ec851b3925c1Jesse Wilsonimport java.util.zip.CheckedInputStream; 31858dd42310622fd1b77bfa0fbd85ec851b3925c1Jesse Wilsonimport java.util.zip.Inflater; 32858dd42310622fd1b77bfa0fbd85ec851b3925c1Jesse Wilsonimport java.util.zip.InflaterInputStream; 33858dd42310622fd1b77bfa0fbd85ec851b3925c1Jesse Wilsonimport javax.crypto.CipherInputStream; 34858dd42310622fd1b77bfa0fbd85ec851b3925c1Jesse Wilsonimport javax.crypto.NullCipher; 35858dd42310622fd1b77bfa0fbd85ec851b3925c1Jesse Wilsonimport junit.framework.TestCase; 36858dd42310622fd1b77bfa0fbd85ec851b3925c1Jesse Wilson 37858dd42310622fd1b77bfa0fbd85ec851b3925c1Jesse Wilsonpublic final class FilterInputStreamNullSourceTest extends TestCase { 38858dd42310622fd1b77bfa0fbd85ec851b3925c1Jesse Wilson 39858dd42310622fd1b77bfa0fbd85ec851b3925c1Jesse Wilson public void testBufferedInputStream() throws IOException { 40858dd42310622fd1b77bfa0fbd85ec851b3925c1Jesse Wilson assertReadsFailWithIoException(new BufferedInputStream(null)); 41858dd42310622fd1b77bfa0fbd85ec851b3925c1Jesse Wilson assertReadsFailWithIoException(new BufferedInputStream(null, 1024)); 42858dd42310622fd1b77bfa0fbd85ec851b3925c1Jesse Wilson } 43858dd42310622fd1b77bfa0fbd85ec851b3925c1Jesse Wilson 44858dd42310622fd1b77bfa0fbd85ec851b3925c1Jesse Wilson public void testCheckedInputStream() throws IOException { 45858dd42310622fd1b77bfa0fbd85ec851b3925c1Jesse Wilson assertReadsFailWithNullPointerException(new CheckedInputStream(null, new CRC32())); 46858dd42310622fd1b77bfa0fbd85ec851b3925c1Jesse Wilson } 47858dd42310622fd1b77bfa0fbd85ec851b3925c1Jesse Wilson 48858dd42310622fd1b77bfa0fbd85ec851b3925c1Jesse Wilson public void testCipherInputStream() throws IOException { 49858dd42310622fd1b77bfa0fbd85ec851b3925c1Jesse Wilson InputStream in = new CipherInputStream(null, new NullCipher()); 50858dd42310622fd1b77bfa0fbd85ec851b3925c1Jesse Wilson try { 51858dd42310622fd1b77bfa0fbd85ec851b3925c1Jesse Wilson in.read(); 52858dd42310622fd1b77bfa0fbd85ec851b3925c1Jesse Wilson fail(); 53858dd42310622fd1b77bfa0fbd85ec851b3925c1Jesse Wilson } catch (NullPointerException expected) { 54858dd42310622fd1b77bfa0fbd85ec851b3925c1Jesse Wilson } 55858dd42310622fd1b77bfa0fbd85ec851b3925c1Jesse Wilson 56858dd42310622fd1b77bfa0fbd85ec851b3925c1Jesse Wilson assertEquals(0, in.available()); 57858dd42310622fd1b77bfa0fbd85ec851b3925c1Jesse Wilson 58858dd42310622fd1b77bfa0fbd85ec851b3925c1Jesse Wilson try { 59858dd42310622fd1b77bfa0fbd85ec851b3925c1Jesse Wilson in.close(); 60858dd42310622fd1b77bfa0fbd85ec851b3925c1Jesse Wilson fail(); 61858dd42310622fd1b77bfa0fbd85ec851b3925c1Jesse Wilson } catch (NullPointerException expected) { 62858dd42310622fd1b77bfa0fbd85ec851b3925c1Jesse Wilson } 63858dd42310622fd1b77bfa0fbd85ec851b3925c1Jesse Wilson } 64858dd42310622fd1b77bfa0fbd85ec851b3925c1Jesse Wilson 65858dd42310622fd1b77bfa0fbd85ec851b3925c1Jesse Wilson public void testDataInputStream() throws IOException { 66858dd42310622fd1b77bfa0fbd85ec851b3925c1Jesse Wilson assertReadsFailWithNullPointerException(new DataInputStream(null)); 67858dd42310622fd1b77bfa0fbd85ec851b3925c1Jesse Wilson } 68858dd42310622fd1b77bfa0fbd85ec851b3925c1Jesse Wilson 69858dd42310622fd1b77bfa0fbd85ec851b3925c1Jesse Wilson public void testDigestInputStream() throws IOException, NoSuchAlgorithmException { 70858dd42310622fd1b77bfa0fbd85ec851b3925c1Jesse Wilson MessageDigest md5 = MessageDigest.getInstance("MD5"); 71858dd42310622fd1b77bfa0fbd85ec851b3925c1Jesse Wilson assertReadsFailWithNullPointerException(new DigestInputStream(null, md5)); 72858dd42310622fd1b77bfa0fbd85ec851b3925c1Jesse Wilson } 73858dd42310622fd1b77bfa0fbd85ec851b3925c1Jesse Wilson 74858dd42310622fd1b77bfa0fbd85ec851b3925c1Jesse Wilson public void testFilterInputStream() throws IOException { 75858dd42310622fd1b77bfa0fbd85ec851b3925c1Jesse Wilson assertReadsFailWithNullPointerException(new FilterInputStream(null) {}); 76858dd42310622fd1b77bfa0fbd85ec851b3925c1Jesse Wilson } 77858dd42310622fd1b77bfa0fbd85ec851b3925c1Jesse Wilson 78858dd42310622fd1b77bfa0fbd85ec851b3925c1Jesse Wilson public void testInflaterInputStream() throws IOException { 79858dd42310622fd1b77bfa0fbd85ec851b3925c1Jesse Wilson try { 80858dd42310622fd1b77bfa0fbd85ec851b3925c1Jesse Wilson new InflaterInputStream(null); 81858dd42310622fd1b77bfa0fbd85ec851b3925c1Jesse Wilson fail(); 82858dd42310622fd1b77bfa0fbd85ec851b3925c1Jesse Wilson } catch (NullPointerException expected) { 83858dd42310622fd1b77bfa0fbd85ec851b3925c1Jesse Wilson } 84858dd42310622fd1b77bfa0fbd85ec851b3925c1Jesse Wilson try { 85858dd42310622fd1b77bfa0fbd85ec851b3925c1Jesse Wilson new InflaterInputStream(null, new Inflater()); 86858dd42310622fd1b77bfa0fbd85ec851b3925c1Jesse Wilson fail(); 87858dd42310622fd1b77bfa0fbd85ec851b3925c1Jesse Wilson } catch (NullPointerException expected) { 88858dd42310622fd1b77bfa0fbd85ec851b3925c1Jesse Wilson } 89858dd42310622fd1b77bfa0fbd85ec851b3925c1Jesse Wilson try { 90858dd42310622fd1b77bfa0fbd85ec851b3925c1Jesse Wilson new InflaterInputStream(null, new Inflater(), 1024); 91858dd42310622fd1b77bfa0fbd85ec851b3925c1Jesse Wilson fail(); 92858dd42310622fd1b77bfa0fbd85ec851b3925c1Jesse Wilson } catch (NullPointerException expected) { 93858dd42310622fd1b77bfa0fbd85ec851b3925c1Jesse Wilson } 94858dd42310622fd1b77bfa0fbd85ec851b3925c1Jesse Wilson } 95858dd42310622fd1b77bfa0fbd85ec851b3925c1Jesse Wilson 96858dd42310622fd1b77bfa0fbd85ec851b3925c1Jesse Wilson public void testLineNumberInputStream() throws IOException { 97858dd42310622fd1b77bfa0fbd85ec851b3925c1Jesse Wilson assertReadsFailWithNullPointerException(new LineNumberInputStream(null)); 98858dd42310622fd1b77bfa0fbd85ec851b3925c1Jesse Wilson } 99858dd42310622fd1b77bfa0fbd85ec851b3925c1Jesse Wilson 100858dd42310622fd1b77bfa0fbd85ec851b3925c1Jesse Wilson public void testPushbackInputStream() throws IOException { 101858dd42310622fd1b77bfa0fbd85ec851b3925c1Jesse Wilson assertReadsFailWithIoException(new PushbackInputStream(null)); 102858dd42310622fd1b77bfa0fbd85ec851b3925c1Jesse Wilson assertReadsFailWithIoException(new PushbackInputStream(null, 1024)); 103858dd42310622fd1b77bfa0fbd85ec851b3925c1Jesse Wilson } 104858dd42310622fd1b77bfa0fbd85ec851b3925c1Jesse Wilson 105858dd42310622fd1b77bfa0fbd85ec851b3925c1Jesse Wilson private void assertReadsFailWithIoException(InputStream in) throws IOException { 106858dd42310622fd1b77bfa0fbd85ec851b3925c1Jesse Wilson try { 107858dd42310622fd1b77bfa0fbd85ec851b3925c1Jesse Wilson in.read(); 108858dd42310622fd1b77bfa0fbd85ec851b3925c1Jesse Wilson fail(); 109858dd42310622fd1b77bfa0fbd85ec851b3925c1Jesse Wilson } catch (IOException expected) { 110858dd42310622fd1b77bfa0fbd85ec851b3925c1Jesse Wilson } 111858dd42310622fd1b77bfa0fbd85ec851b3925c1Jesse Wilson 112858dd42310622fd1b77bfa0fbd85ec851b3925c1Jesse Wilson try { 113858dd42310622fd1b77bfa0fbd85ec851b3925c1Jesse Wilson in.available(); 114858dd42310622fd1b77bfa0fbd85ec851b3925c1Jesse Wilson fail(); 115858dd42310622fd1b77bfa0fbd85ec851b3925c1Jesse Wilson } catch (IOException expected) { 116858dd42310622fd1b77bfa0fbd85ec851b3925c1Jesse Wilson } 117858dd42310622fd1b77bfa0fbd85ec851b3925c1Jesse Wilson 118858dd42310622fd1b77bfa0fbd85ec851b3925c1Jesse Wilson in.close(); 119858dd42310622fd1b77bfa0fbd85ec851b3925c1Jesse Wilson } 120858dd42310622fd1b77bfa0fbd85ec851b3925c1Jesse Wilson 121858dd42310622fd1b77bfa0fbd85ec851b3925c1Jesse Wilson private void assertReadsFailWithNullPointerException(InputStream in) throws IOException { 122858dd42310622fd1b77bfa0fbd85ec851b3925c1Jesse Wilson try { 123858dd42310622fd1b77bfa0fbd85ec851b3925c1Jesse Wilson in.read(); 124858dd42310622fd1b77bfa0fbd85ec851b3925c1Jesse Wilson fail(); 125858dd42310622fd1b77bfa0fbd85ec851b3925c1Jesse Wilson } catch (NullPointerException expected) { 126858dd42310622fd1b77bfa0fbd85ec851b3925c1Jesse Wilson } 127858dd42310622fd1b77bfa0fbd85ec851b3925c1Jesse Wilson 128858dd42310622fd1b77bfa0fbd85ec851b3925c1Jesse Wilson try { 129858dd42310622fd1b77bfa0fbd85ec851b3925c1Jesse Wilson in.available(); 130858dd42310622fd1b77bfa0fbd85ec851b3925c1Jesse Wilson fail(); 131858dd42310622fd1b77bfa0fbd85ec851b3925c1Jesse Wilson } catch (NullPointerException expected) { 132858dd42310622fd1b77bfa0fbd85ec851b3925c1Jesse Wilson } 133858dd42310622fd1b77bfa0fbd85ec851b3925c1Jesse Wilson 134858dd42310622fd1b77bfa0fbd85ec851b3925c1Jesse Wilson try { 135858dd42310622fd1b77bfa0fbd85ec851b3925c1Jesse Wilson in.close(); 136858dd42310622fd1b77bfa0fbd85ec851b3925c1Jesse Wilson fail(); 137858dd42310622fd1b77bfa0fbd85ec851b3925c1Jesse Wilson } catch (NullPointerException expected) { 138858dd42310622fd1b77bfa0fbd85ec851b3925c1Jesse Wilson } 139858dd42310622fd1b77bfa0fbd85ec851b3925c1Jesse Wilson } 140858dd42310622fd1b77bfa0fbd85ec851b3925c1Jesse Wilson} 141