blob: 27240e61b46ac61467d5e678f073d5b41b893d99 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package libcore.java.io;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.EOFException;
import java.io.IOException;
import tests.support.Support_ASimpleInputStream;
public class OldDataInputStreamTest extends junit.framework.TestCase {
private DataOutputStream os;
private DataInputStream dis;
private ByteArrayOutputStream bos;
String unihw = "\u0048\u0065\u006C\u006C\u006F\u0020\u0057\u006F\u0072\u006C\u0064";
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";
private final int testLength = fileString.length();
public void test_ConstructorLjava_io_InputStream() {
try {
os.writeChar('t');
os.close();
openDataInputStream();
} catch (IOException e) {
fail("IOException during constructor test : " + e.getMessage());
} finally {
try {
dis.close();
} catch (IOException e) {
fail("IOException during constructor test : " + e.getMessage());
}
}
}
public void test_read$B() throws IOException {
byte rbytes[] = new byte[testLength - 5];
Support_ASimpleInputStream sis = new Support_ASimpleInputStream();
int r;
os.write(fileString.getBytes());
os.close();
openDataInputStream();
r = dis.read(rbytes);
assertEquals("Test 1: Incorrect number of bytes read;",
testLength - 5, r);
assertTrue("Test 2: Incorrect data written or read.",
new String(rbytes).equals(fileString.substring(0, testLength - 5)));
r = dis.read(rbytes);
assertEquals("Test 3: Incorrect number of bytes read;", 5, r);
assertTrue("Test 4: Incorrect data written or read.",
new String(rbytes, 0, 5).equals(fileString.substring(testLength - 5)));
dis.close();
sis.throwExceptionOnNextUse = true;
dis = new DataInputStream(sis);
try {
dis.read(rbytes);
fail("Test 5: IOException expected.");
} catch (IOException e) {
// Expected.
}
}
public void test_read$BII() throws IOException {
byte rbytes[] = new byte[testLength - 5];
Support_ASimpleInputStream sis = new Support_ASimpleInputStream();
int r;
os.write(fileString.getBytes());
os.close();
openDataInputStream();
r = dis.read(rbytes, 1, testLength - 10);
assertEquals("Test 1: Incorrect number of bytes read;",
testLength - 10, r);
assertEquals("Test 2: Incorrect data read.", 0, rbytes[0]);
assertTrue("Test 3: Incorrect data written or read.",
new String(rbytes, 1, r).equals(fileString.substring(0, r)));
r = dis.read(rbytes, 0, 15);
assertEquals("Test 3: Incorrect number of bytes read;", 10, r);
assertTrue("Test 4: Incorrect data written or read.",
new String(rbytes, 0, r).equals(fileString.substring(testLength - 10)));
dis.close();
sis.throwExceptionOnNextUse = true;
dis = new DataInputStream(sis);
try {
dis.read(rbytes, 1, 5);
fail("Test 5: IOException expected.");
} catch (IOException e) {
// Expected.
}
}
public void test_read$BII_Exception() throws IOException {
byte rbytes[] = new byte[testLength - 5];
os.write(fileString.getBytes());
os.close();
openDataInputStream();
try {
dis.read(rbytes, -1, 1);
fail("IndexOutOfBoundsException expected.");
} catch (IndexOutOfBoundsException e) {
// Expected
}
try {
dis.read(rbytes, 0, -1);
fail("IndexOutOfBoundsException expected.");
} catch (IndexOutOfBoundsException e) {
// Expected
}
try {
dis.read(rbytes, rbytes.length, 1);
fail("IndexOutOfBoundsException expected.");
} catch (IndexOutOfBoundsException e) {
// Expected
}
}
public void test_readFully$B() throws IOException {
byte rbytes[] = new byte[testLength];
os.write(fileString.getBytes());
os.close();
openDataInputStream();
dis.readFully(rbytes);
assertTrue("Test 1: Incorrect data written or read.",
new String(rbytes, 0, testLength).equals(fileString));
dis.close();
try {
dis.readFully(rbytes);
fail("Test 2: IOException expected.");
} catch (IOException e) {
// Expected.
}
openDataInputStream();
dis.readByte();
try {
dis.readFully(rbytes);
fail("Test 3: EOFException expected.");
} catch (EOFException e) {
// Expected.
}
}
public void test_readFully$BII() throws IOException {
byte rbytes[] = new byte[testLength];
os.write(fileString.getBytes());
os.close();
openDataInputStream();
dis.readFully(rbytes, 2, testLength - 4);
assertTrue("Test 1: Incorrect data written or read.",
new String(rbytes, 2, testLength - 4).equals(
fileString.substring(0, testLength - 4)));
dis.close();
try {
dis.readFully(rbytes, 0, testLength);
fail("Test 2: IOException expected.");
} catch (IOException e) {
// Expected.
}
openDataInputStream();
dis.readByte();
try {
dis.readFully(rbytes, 0, testLength);
fail("Test 3: EOFException expected.");
} catch (EOFException e) {
// Expected.
}
}
public void test_readFully$BII_Exception() throws IOException {
DataInputStream is = new DataInputStream(new ByteArrayInputStream(new byte[testLength]));
byte[] byteArray = new byte[testLength];
try {
is.readFully(byteArray, 0, -1);
fail("Test 1: IndexOutOfBoundsException expected.");
} catch (IndexOutOfBoundsException e) {
// Expected.
}
try {
is.readFully(byteArray, 0, byteArray.length + 1);
fail("Test 2: IndexOutOfBoundsException expected.");
} catch (IndexOutOfBoundsException e) {
// Expected.
}
try {
is.readFully(byteArray, 1, byteArray.length);
fail("Test 3: IndexOutOfBoundsException expected.");
} catch (IndexOutOfBoundsException e) {
// Expected.
}
try {
is.readFully(byteArray, -1, byteArray.length);
fail("Test 4: IndexOutOfBoundsException expected.");
} catch (IndexOutOfBoundsException e) {
// Expected.
}
try {
is.readFully(null, 0, 1);
fail("Test 5: NullPointerException expected.");
} catch (NullPointerException e) {
// Expected.
}
is = new DataInputStream(null);
try {
is.readFully(byteArray, 0, 1);
fail("Test 6: NullPointerException expected.");
} catch (NullPointerException e) {
// Expected.
}
}
@SuppressWarnings("deprecation")
public void test_readLine() throws IOException {
String line;
os.writeBytes("Lorem\nipsum\rdolor sit amet...");
os.close();
openDataInputStream();
line = dis.readLine();
assertTrue("Test 1: Incorrect line written or read: " + line,
line.equals("Lorem"));
line = dis.readLine();
assertTrue("Test 2: Incorrect line written or read: " + line,
line.equals("ipsum"));
line = dis.readLine();
assertTrue("Test 3: Incorrect line written or read: " + line,
line.equals("dolor sit amet..."));
dis.close();
try {
dis.readLine();
fail("Test 4: IOException expected.");
} catch (IOException e) {
// Expected.
}
}
public void test_readUnsignedByte() throws IOException {
os.writeByte((byte) -127);
os.close();
openDataInputStream();
assertEquals("Test 1: Incorrect byte written or read;",
129, dis.readUnsignedByte());
try {
dis.readUnsignedByte();
fail("Test 2: EOFException expected.");
} catch (EOFException e) {
// Expected.
}
dis.close();
try {
dis.readUnsignedByte();
fail("Test 3: IOException expected.");
} catch (IOException e) {
// Expected.
}
}
public void test_readUnsignedShort() throws IOException {
os.writeShort(Short.MIN_VALUE);
os.close();
openDataInputStream();
assertEquals("Test 1: Incorrect short written or read;",
(Short.MAX_VALUE + 1), dis.readUnsignedShort());
try {
dis.readUnsignedShort();
fail("Test 2: EOFException expected.");
} catch (EOFException e) {
// Expected.
}
dis.close();
try {
dis.readUnsignedShort();
fail("Test 3: IOException expected.");
} catch (IOException e) {
// Expected.
}
}
public void test_readUTFLjava_io_DataInput() throws IOException {
os.writeUTF(unihw);
os.close();
openDataInputStream();
assertTrue("Test 1: Incorrect UTF-8 string written or read.",
DataInputStream.readUTF(dis).equals(unihw));
try {
DataInputStream.readUTF(dis);
fail("Test 2: EOFException expected.");
} catch (EOFException e) {
// Expected.
}
dis.close();
try {
DataInputStream.readUTF(dis);
fail("Test 3: IOException expected.");
} catch (IOException e) {
// Expected.
}
}
private void openDataInputStream() throws IOException {
dis = new DataInputStream(new ByteArrayInputStream(bos.toByteArray()));
}
/**
* Sets up the fixture, for example, open a network connection. This method
* is called before a test is executed.
*/
protected void setUp() {
bos = new ByteArrayOutputStream();
os = new DataOutputStream(bos);
}
/**
* Tears down the fixture, for example, close a network connection. This
* method is called after a test is executed.
*/
protected void tearDown() {
try {
os.close();
} catch (Exception e) {
}
try {
dis.close();
} catch (Exception e) {
}
}
}