2424import java .io .IOException ;
2525import java .io .InputStream ;
2626
27+ import org .apache .commons .io .IOUtils ;
2728import org .junit .jupiter .api .Test ;
29+ import org .junit .jupiter .params .ParameterizedTest ;
30+ import org .junit .jupiter .params .provider .MethodSource ;
2831
2932/**
30- * Tests {@link MarkTestableInputStream }.
33+ * Tests {@link MarkShieldInputStream }.
3134 */
3235public class MarkShieldInputStreamTest {
3336
@@ -50,6 +53,41 @@ public void mark(final int readLimit) {
5053 }
5154 }
5255
56+ @ SuppressWarnings ("resource" )
57+ @ ParameterizedTest
58+ @ MethodSource (AbstractInputStreamTest .ARRAY_LENGTHS_NAME )
59+ public void testAvailableAfterClose (final int len ) throws Exception {
60+ final InputStream shadow ;
61+ try (MarkTestableInputStream in = new MarkTestableInputStream (new NullInputStream (len , false , false ));
62+ final MarkShieldInputStream msis = new MarkShieldInputStream (in )) {
63+ assertEquals (len , in .available ());
64+ shadow = in ;
65+ }
66+ assertEquals (0 , shadow .available ());
67+ }
68+
69+ @ SuppressWarnings ("resource" )
70+ @ ParameterizedTest
71+ @ MethodSource (AbstractInputStreamTest .ARRAY_LENGTHS_NAME )
72+ public void testReadAfterClose (final int len ) throws Exception {
73+ final InputStream shadow ;
74+ try (MarkTestableInputStream in = new MarkTestableInputStream (new NullInputStream (len , false , false ));
75+ final MarkShieldInputStream msis = new MarkShieldInputStream (in )) {
76+ assertEquals (len , in .available ());
77+ shadow = in ;
78+ }
79+ assertEquals (IOUtils .EOF , shadow .read ());
80+ }
81+
82+ @ ParameterizedTest
83+ @ MethodSource (AbstractInputStreamTest .ARRAY_LENGTHS_NAME )
84+ public void testAvailableAfterOpen (final int len ) throws Exception {
85+ try (MarkTestableInputStream in = new MarkTestableInputStream (new NullInputStream (len , false , false ));
86+ final MarkShieldInputStream msis = new MarkShieldInputStream (in )) {
87+ assertEquals (len , in .available ());
88+ }
89+ }
90+
5391 @ Test
5492 public void testMarkIsNoOpWhenUnderlyingDoesNotSupport () throws IOException {
5593 try (MarkTestableInputStream in = new MarkTestableInputStream (new NullInputStream (64 , false , false ));
0 commit comments