1561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes/*
2561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  Licensed to the Apache Software Foundation (ASF) under one or more
3561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  contributor license agreements.  See the NOTICE file distributed with
4561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  this work for additional information regarding copyright ownership.
5561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  The ASF licenses this file to You under the Apache License, Version 2.0
6561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  (the "License"); you may not use this file except in compliance with
7561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  the License.  You may obtain a copy of the License at
8561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *
9561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *     http://www.apache.org/licenses/LICENSE-2.0
10561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *
11561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  Unless required by applicable law or agreed to in writing, software
12561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  distributed under the License is distributed on an "AS IS" BASIS,
13561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  See the License for the specific language governing permissions and
15561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  limitations under the License.
16561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */
17561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughespackage org.apache.harmony.luni.tests.java.io;
18561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
19561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.io.ByteArrayInputStream;
20561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.io.ByteArrayOutputStream;
21561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.io.DataInput;
22561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.io.DataInputStream;
23561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.io.DataOutputStream;
24561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.io.EOFException;
25561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.io.IOException;
26561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
27561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughespublic class DataInputStreamTest extends junit.framework.TestCase {
28561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
29561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    private DataOutputStream os;
30561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
31561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    private DataInputStream dis;
32561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
33561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    private ByteArrayOutputStream bos;
34561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
35561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    String unihw = "\u0048\u0065\u006C\u006C\u006F\u0020\u0057\u006F\u0072\u006C\u0064";
36561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
37561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public String fileString = "Test_All_Tests\nTest_java_io_BufferedInputStream\nTest_java_io_BufferedOutputStream\nTest_java_io_ByteArrayInputStream\nTest_java_io_ByteArrayOutputStream\nTest_DataInputStream\n";
38561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
39561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
40561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.io.DataInputStream#DataInputStream(java.io.InputStream)
41561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
42561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_ConstructorLjava_io_InputStream() throws IOException {
43561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
44561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            os.writeChar('t');
45561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            os.close();
46561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            openDataInputStream();
47561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } finally {
48561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            dis.close();
49561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
50561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
51561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
52561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
53561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.io.DataInputStream#read(byte[])
54561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
55561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_read$B() throws IOException {
56561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        os.write(fileString.getBytes());
57561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        os.close();
58561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        openDataInputStream();
59561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        byte rbytes[] = new byte[fileString.length()];
60561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        dis.read(rbytes);
61561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("Incorrect data read", new String(rbytes, 0, fileString
62561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .length()).equals(fileString));
63561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
64561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
65561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
66561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.io.DataInputStream#read(byte[], int, int)
67561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
68561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_read$BII() throws IOException {
69561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        os.write(fileString.getBytes());
70561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        os.close();
71561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        openDataInputStream();
72561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        byte rbytes[] = new byte[fileString.length()];
73561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        dis.read(rbytes, 0, rbytes.length);
74561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("Incorrect data read", new String(rbytes, 0, fileString
75561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .length()).equals(fileString));
76561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
77561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
78561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
79561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.io.DataInputStream#readBoolean()
80561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
81561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_readBoolean() throws IOException {
82561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        os.writeBoolean(true);
83561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        os.close();
84561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        openDataInputStream();
85561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("Incorrect boolean written", dis.readBoolean());
86561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
87561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
88561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
89561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.io.DataInputStream#readByte()
90561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
91561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_readByte() throws IOException {
92561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        os.writeByte((byte) 127);
93561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        os.close();
94561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        openDataInputStream();
95561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("Incorrect byte read", dis.readByte() == (byte) 127);
96561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
97561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
98561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
99561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.io.DataInputStream#readChar()
100561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
101561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_readChar() throws IOException {
102561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        os.writeChar('t');
103561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        os.close();
104561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        openDataInputStream();
105561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Incorrect char read", 't', dis.readChar());
106561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
107561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
108561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
109561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.io.DataInputStream#readDouble()
110561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
111561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_readDouble() throws IOException {
112561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        os.writeDouble(2345.76834720202);
113561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        os.close();
114561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        openDataInputStream();
115561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Incorrect double read", 2345.76834720202, dis
116561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .readDouble());
117561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
118561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
119561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
120561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.io.DataInputStream#readFloat()
121561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
122561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_readFloat() throws IOException {
123561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        os.writeFloat(29.08764f);
124561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        os.close();
125561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        openDataInputStream();
126561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("Incorrect float read", dis.readFloat() == 29.08764f);
127561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
128561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
129561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
130561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.io.DataInputStream#readFully(byte[])
131561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
132561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_readFully$B() throws IOException {
133561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        os.write(fileString.getBytes());
134561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        os.close();
135561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        openDataInputStream();
136561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        byte rbytes[] = new byte[fileString.length()];
137561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        dis.readFully(rbytes);
138561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("Incorrect data read", new String(rbytes, 0, fileString
139561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .length()).equals(fileString));
140561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
141561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
142561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
143561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.io.DataInputStream#readFully(byte[], int, int)
144561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
145561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_readFully$BII() throws IOException {
146561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        os.write(fileString.getBytes());
147561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        os.close();
148561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        openDataInputStream();
149561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        byte rbytes[] = new byte[fileString.length()];
150561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        dis.readFully(rbytes, 0, fileString.length());
151561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("Incorrect data read", new String(rbytes, 0, fileString
152561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .length()).equals(fileString));
153561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
154561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
155561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
156561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.io.DataInputStream#readFully(byte[], int, int)
157561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
158561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_readFully$BII_Exception() throws IOException {
159561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        DataInputStream is = new DataInputStream(new ByteArrayInputStream(
160561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                new byte[fileString.length()]));
161561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
162561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        byte[] byteArray = new byte[fileString.length()];
163561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
164561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
165561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            is.readFully(byteArray, -1, -1);
166561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IndexOutOfBoundsException");
167561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IndexOutOfBoundsException e) {
168561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // expected
169561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
170561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
171561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
172561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            is.readFully(byteArray, 0, -1);
173561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IndexOutOfBoundsException");
174561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IndexOutOfBoundsException e) {
175561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // expected
176561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
177561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
178561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
179561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            is.readFully(byteArray, 1, -1);
180561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IndexOutOfBoundsException");
181561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IndexOutOfBoundsException e) {
182561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // expected
183561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
184561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
185561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        is.readFully(byteArray, -1, 0);
186561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        is.readFully(byteArray, 0, 0);
187561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        is.readFully(byteArray, 1, 0);
188561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
189561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
190561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            is.readFully(byteArray, -1, 1);
191561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IndexOutOfBoundsException");
192561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IndexOutOfBoundsException e) {
193561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // expected
194561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
195561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
196561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        is.readFully(byteArray, 0, 1);
197561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        is.readFully(byteArray, 1, 1);
198561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
199561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            is.readFully(byteArray, 0, Integer.MAX_VALUE);
200561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IndexOutOfBoundsException");
201561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IndexOutOfBoundsException e) {
202561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // expected
203561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
204561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
205561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
206561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
207561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.io.DataInputStream#readFully(byte[], int, int)
208561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
209561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_readFully$BII_NullArray() throws IOException {
210561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        DataInputStream is = new DataInputStream(new ByteArrayInputStream(
211561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                new byte[fileString.length()]));
212561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
213561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        byte[] nullByteArray = null;
214561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
215561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
216561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            is.readFully(nullByteArray, -1, -1);
2172a68e06b23ceb5b401d5bc784e6882e71c662caeElliott Hughes            fail();
2182a68e06b23ceb5b401d5bc784e6882e71c662caeElliott Hughes        } catch (NullPointerException expected) {
2192a68e06b23ceb5b401d5bc784e6882e71c662caeElliott Hughes        } catch (IndexOutOfBoundsException expected) {
220561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
221561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
222561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
223561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            is.readFully(nullByteArray, 0, -1);
2242a68e06b23ceb5b401d5bc784e6882e71c662caeElliott Hughes            fail();
2252a68e06b23ceb5b401d5bc784e6882e71c662caeElliott Hughes        } catch (NullPointerException expected) {
2262a68e06b23ceb5b401d5bc784e6882e71c662caeElliott Hughes        } catch (IndexOutOfBoundsException expected) {
227561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
228561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
229561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
230561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            is.readFully(nullByteArray, 1, -1);
2312a68e06b23ceb5b401d5bc784e6882e71c662caeElliott Hughes            fail();
2322a68e06b23ceb5b401d5bc784e6882e71c662caeElliott Hughes        } catch (NullPointerException expected) {
2332a68e06b23ceb5b401d5bc784e6882e71c662caeElliott Hughes        } catch (IndexOutOfBoundsException expected) {
234561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
235561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
236561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        is.readFully(nullByteArray, -1, 0);
237561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        is.readFully(nullByteArray, 0, 0);
238561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        is.readFully(nullByteArray, 1, 0);
239561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
240561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
241561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            is.readFully(nullByteArray, -1, 1);
2422a68e06b23ceb5b401d5bc784e6882e71c662caeElliott Hughes            fail();
2432a68e06b23ceb5b401d5bc784e6882e71c662caeElliott Hughes        } catch (NullPointerException expected) {
2442a68e06b23ceb5b401d5bc784e6882e71c662caeElliott Hughes        } catch (IndexOutOfBoundsException expected) {
245561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
246561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
247561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
248561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            is.readFully(nullByteArray, 0, 1);
249561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NullPointerException");
250561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NullPointerException e) {
251561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // expected
252561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
253561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
254561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
255561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            is.readFully(nullByteArray, 1, 1);
256561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NullPointerException");
257561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NullPointerException e) {
258561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // expected
259561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
260561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
261561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
262561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            is.readFully(nullByteArray, 0, Integer.MAX_VALUE);
263561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NullPointerException");
264561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NullPointerException e) {
265561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // expected
266561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
267561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
268561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
269561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
270561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.io.DataInputStream#readFully(byte[], int, int)
271561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
272561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_readFully$BII_NullStream() throws IOException {
273561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        DataInputStream is = new DataInputStream(null);
274561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        byte[] byteArray = new byte[fileString.length()];
275561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
276561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
277561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            is.readFully(byteArray, -1, -1);
2782a68e06b23ceb5b401d5bc784e6882e71c662caeElliott Hughes            fail();
2792a68e06b23ceb5b401d5bc784e6882e71c662caeElliott Hughes        } catch (NullPointerException expected) {
2802a68e06b23ceb5b401d5bc784e6882e71c662caeElliott Hughes        } catch (IndexOutOfBoundsException expected) {
281561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
282561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
283561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
284561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            is.readFully(byteArray, 0, -1);
2852a68e06b23ceb5b401d5bc784e6882e71c662caeElliott Hughes            fail();
2862a68e06b23ceb5b401d5bc784e6882e71c662caeElliott Hughes        } catch (NullPointerException expected) {
2872a68e06b23ceb5b401d5bc784e6882e71c662caeElliott Hughes        } catch (IndexOutOfBoundsException expected) {
288561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
289561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
290561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
291561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            is.readFully(byteArray, 1, -1);
2922a68e06b23ceb5b401d5bc784e6882e71c662caeElliott Hughes            fail();
2932a68e06b23ceb5b401d5bc784e6882e71c662caeElliott Hughes        } catch (NullPointerException expected) {
2942a68e06b23ceb5b401d5bc784e6882e71c662caeElliott Hughes        } catch (IndexOutOfBoundsException expected) {
295561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
296561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
297561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        is.readFully(byteArray, -1, 0);
298561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        is.readFully(byteArray, 0, 0);
299561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        is.readFully(byteArray, 1, 0);
300561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
301561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
302561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            is.readFully(byteArray, -1, 1);
303561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NullPointerException");
304561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NullPointerException e) {
305561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // expected
306561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
307561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
308561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
309561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            is.readFully(byteArray, 0, 1);
310561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NullPointerException");
311561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NullPointerException e) {
312561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // expected
313561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
314561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
315561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
316561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            is.readFully(byteArray, 1, 1);
317561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NullPointerException");
318561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NullPointerException e) {
319561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // expected
320561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
321561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
322561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
323561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            is.readFully(byteArray, 0, Integer.MAX_VALUE);
324561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NullPointerException");
325561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NullPointerException e) {
326561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // expected
327561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
328561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
329561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
330561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
331561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.io.DataInputStream#readFully(byte[], int, int)
332561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
333561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_readFully$BII_NullStream_NullArray() throws IOException {
334561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        DataInputStream is = new DataInputStream(null);
335561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        byte[] nullByteArray = null;
336561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
337561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
338561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            is.readFully(nullByteArray, -1, -1);
3392a68e06b23ceb5b401d5bc784e6882e71c662caeElliott Hughes            fail();
3402a68e06b23ceb5b401d5bc784e6882e71c662caeElliott Hughes        } catch (NullPointerException expected) {
3412a68e06b23ceb5b401d5bc784e6882e71c662caeElliott Hughes        } catch (IndexOutOfBoundsException expected) {
342561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
343561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
344561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
345561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            is.readFully(nullByteArray, 0, -1);
3462a68e06b23ceb5b401d5bc784e6882e71c662caeElliott Hughes            fail();
3472a68e06b23ceb5b401d5bc784e6882e71c662caeElliott Hughes        } catch (NullPointerException expected) {
3482a68e06b23ceb5b401d5bc784e6882e71c662caeElliott Hughes        } catch (IndexOutOfBoundsException expected) {
349561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
350561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
351561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
352561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            is.readFully(nullByteArray, 1, -1);
3532a68e06b23ceb5b401d5bc784e6882e71c662caeElliott Hughes            fail();
3542a68e06b23ceb5b401d5bc784e6882e71c662caeElliott Hughes        } catch (NullPointerException expected) {
3552a68e06b23ceb5b401d5bc784e6882e71c662caeElliott Hughes        } catch (IndexOutOfBoundsException expected) {
356561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
357561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
358561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        is.readFully(nullByteArray, -1, 0);
359561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        is.readFully(nullByteArray, 0, 0);
360561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        is.readFully(nullByteArray, 1, 0);
361561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
362561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
363561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            is.readFully(nullByteArray, -1, 1);
364561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NullPointerException");
365561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NullPointerException e) {
366561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // expected
367561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
368561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
369561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
370561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            is.readFully(nullByteArray, 0, 1);
371561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NullPointerException");
372561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NullPointerException e) {
373561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // expected
374561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
375561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
376561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
377561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            is.readFully(nullByteArray, 1, 1);
378561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NullPointerException");
379561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NullPointerException e) {
380561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // expected
381561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
382561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
383561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
384561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            is.readFully(nullByteArray, 0, Integer.MAX_VALUE);
385561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NullPointerException");
386561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NullPointerException e) {
387561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // expected
388561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
389561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
390561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
391561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
392561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.io.DataInputStream#readInt()
393561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
394561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_readInt() throws IOException {
395561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        os.writeInt(768347202);
396561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        os.close();
397561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        openDataInputStream();
398561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Incorrect int read", 768347202, dis.readInt());
399561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
400561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
401561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
402561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.io.DataInputStream#readLine()
403561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
404561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    @SuppressWarnings("deprecation")
405561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_readLine() throws IOException {
406561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        os.writeBytes("Hello");
407561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        os.close();
408561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        openDataInputStream();
409561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String line = dis.readLine();
410561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("Incorrect line read: " + line, line.equals("Hello"));
411561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
412561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
413561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
414561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.io.DataInputStream#readLong()
415561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
416561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_readLong() throws IOException {
417561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        os.writeLong(9875645283333L);
418561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        os.close();
419561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        openDataInputStream();
420561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Incorrect long read", 9875645283333L, dis.readLong());
421561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
422561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
423561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
424561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.io.DataInputStream#readShort()
425561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
426561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_readShort() throws IOException {
427561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        os.writeShort(9875);
428561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        os.close();
429561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        openDataInputStream();
430561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("Incorrect short read", dis.readShort() == (short) 9875);
431561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
432561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
433561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
434561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.io.DataInputStream#readUnsignedByte()
435561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
436561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_readUnsignedByte() throws IOException {
437561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        os.writeByte((byte) -127);
438561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        os.close();
439561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        openDataInputStream();
440561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Incorrect byte read", 129, dis.readUnsignedByte());
441561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
442561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
443561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
444561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.io.DataInputStream#readUnsignedShort()
445561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
446561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_readUnsignedShort() throws IOException {
447561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        os.writeShort(9875);
448561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        os.close();
449561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        openDataInputStream();
450561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Incorrect short read", 9875, dis.readUnsignedShort());
451561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
452561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
453561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
454561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.io.DataInputStream#readUTF()
455561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
456561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_readUTF() throws IOException {
457561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        os.writeUTF(unihw);
458561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        os.close();
459561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        openDataInputStream();
460561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("Failed to write string in UTF format",
461561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                dis.available() == unihw.length() + 2);
462561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("Incorrect string read", dis.readUTF().equals(unihw));
463561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
464561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
465561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    static class TestDataInputStream implements DataInput {
466561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        public boolean readBoolean() throws IOException {
467561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            return false;
468561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
469561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
470561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        public byte readByte() throws IOException {
471561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            return (byte) 0;
472561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
473561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
474561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        public char readChar() throws IOException {
475561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            return (char) 0;
476561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
477561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
478561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        public double readDouble() throws IOException {
479561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            return 0.0;
480561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
481561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
482561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        public float readFloat() throws IOException {
483561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            return (float) 0.0;
484561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
485561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
486561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        public void readFully(byte[] buffer) throws IOException {
487561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
488561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
489561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        public void readFully(byte[] buffer, int offset, int count)
490561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                throws IOException {
491561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
492561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
493561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        public int readInt() throws IOException {
494561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            return 0;
495561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
496561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
497561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        public String readLine() throws IOException {
498561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            return null;
499561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
500561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
501561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        public long readLong() throws IOException {
502561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            return (long) 0;
503561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
504561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
505561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        public short readShort() throws IOException {
506561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            return (short) 0;
507561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
508561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
509561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        public int readUnsignedByte() throws IOException {
510561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            return 0;
511561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
512561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
513561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        public int readUnsignedShort() throws IOException {
514561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            return 0;
515561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
516561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
517561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        public String readUTF() throws IOException {
518561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            return DataInputStream.readUTF(this);
519561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
520561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
521561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        public int skipBytes(int count) throws IOException {
522561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            return 0;
523561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
524561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
525561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
526561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
527561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.io.DataInputStream#readUTF(java.io.DataInput)
528561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
529561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_readUTFLjava_io_DataInput() throws IOException {
530561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        os.writeUTF(unihw);
531561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        os.close();
532561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        openDataInputStream();
533561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("Failed to write string in UTF format",
534561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                dis.available() == unihw.length() + 2);
535561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("Incorrect string read", DataInputStream.readUTF(dis)
536561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .equals(unihw));
537561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
538561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // Regression test for HARMONY-5336
539561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        new TestDataInputStream().readUTF();
540561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
541561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
542561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
543561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.io.DataInputStream#skipBytes(int)
544561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
545561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_skipBytesI() throws IOException {
546561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        byte fileBytes[] = fileString.getBytes();
547561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        os.write(fileBytes);
548561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        os.close();
549561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        openDataInputStream();
550561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        dis.skipBytes(100);
551561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        byte rbytes[] = new byte[fileString.length()];
552561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        dis.read(rbytes, 0, 50);
553561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        dis.close();
554561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("Incorrect data read", new String(rbytes, 0, 50)
555561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .equals(fileString.substring(100, 150)));
556561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
557561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        int skipped = 0;
558561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        openDataInputStream();
559561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
560561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            skipped = dis.skipBytes(50000);
561561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (EOFException e) {
562561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
563561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("Skipped should report " + fileString.length() + " not "
564561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                + skipped, skipped == fileString.length());
565561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
566561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
567561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    private void openDataInputStream() throws IOException {
568561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        dis = new DataInputStream(new ByteArrayInputStream(bos.toByteArray()));
569561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
570561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
571561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
572561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * Sets up the fixture, for example, open a network connection. This method
573561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * is called before a test is executed.
574561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
575561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    protected void setUp() {
576561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        bos = new ByteArrayOutputStream();
577561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        os = new DataOutputStream(bos);
578561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
579561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
580561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
581561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * Tears down the fixture, for example, close a network connection. This
582561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * method is called after a test is executed.
583561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
584561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    protected void tearDown() {
585561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
586561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            os.close();
587561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (Exception e) {
588561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
589561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
590561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            dis.close();
591561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (Exception e) {
592561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
593561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
594561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes}
595