Skip to content

Commit 6a625e9

Browse files
committed
Add CharSequenceInputStreamTest.testReadAfterClose()
1 parent c958b31 commit 6a625e9

1 file changed

Lines changed: 24 additions & 13 deletions

File tree

src/test/java/org/apache/commons/io/input/CharSequenceInputStreamTest.java

Lines changed: 24 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -81,19 +81,6 @@ private boolean isOddBallLegacyCharsetThatDoesNotSupportFrenchCharacters(final S
8181
"Shift_JIS".equalsIgnoreCase(csName);
8282
}
8383

84-
/**
85-
* IO-781 available() returns 2 but only 1 byte is read afterwards.
86-
*/
87-
@Test
88-
public void testAvailable() throws IOException {
89-
final Charset charset = Charset.forName("Big5");
90-
final CharSequenceInputStream in = new CharSequenceInputStream("\uD800\uDC00", charset);
91-
final int available = in.available();
92-
final byte[] data = new byte[available];
93-
final int bytesRead = in.read(data);
94-
assertEquals(available, bytesRead);
95-
}
96-
9784
@ParameterizedTest(name = "{0}")
9885
@MethodSource(CharsetsTest.AVAIL_CHARSETS)
9986
public void testAvailable(final String csName) throws Exception {
@@ -128,6 +115,20 @@ public void testAvailableAfterClose() throws Exception {
128115
assertEquals(0, shadow.available());
129116
}
130117

118+
/**
119+
* IO-781 available() returns 2 but only 1 byte is read afterwards.
120+
*/
121+
@Test
122+
public void testAvailableAfterOpen() throws IOException {
123+
final Charset charset = Charset.forName("Big5");
124+
try (CharSequenceInputStream in = new CharSequenceInputStream("\uD800\uDC00", charset)) {
125+
final int available = in.available();
126+
final byte[] data = new byte[available];
127+
final int bytesRead = in.read(data);
128+
assertEquals(available, bytesRead);
129+
}
130+
}
131+
131132
private void testAvailableRead(final String csName) throws Exception {
132133
final String input = "test";
133134
try (InputStream r = new CharSequenceInputStream(input, csName)) {
@@ -447,6 +448,16 @@ public void testNullCharsetName() throws IOException {
447448
}
448449
}
449450

451+
@Test
452+
public void testReadAfterClose() throws Exception {
453+
final InputStream shadow;
454+
try (InputStream in = CharSequenceInputStream.builder().setCharSequence("Hi").get()) {
455+
assertTrue(in.available() > 0);
456+
shadow = in;
457+
}
458+
assertEquals(IOUtils.EOF, shadow.read());
459+
}
460+
450461
private void testReadZero(final String csName) throws Exception {
451462
try (InputStream r = new CharSequenceInputStream("test", csName)) {
452463
final byte[] bytes = new byte[30];

0 commit comments

Comments
 (0)