@@ -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