1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.apache.commons.io.input;
19
20 import static org.junit.jupiter.api.Assertions.assertEquals;
21 import static org.junit.jupiter.api.Assertions.assertThrows;
22
23 import java.io.BufferedInputStream;
24 import java.io.IOException;
25 import java.io.InputStream;
26 import java.io.UncheckedIOException;
27
28 import org.apache.commons.io.IOUtils;
29 import org.junit.jupiter.api.BeforeEach;
30 import org.junit.jupiter.api.Test;
31
32
33
34
35 public class UncheckedFilterInputStreamTest {
36
37 private UncheckedFilterInputStream stringInputStream;
38 private UncheckedFilterInputStream brokenInputStream;
39 private IOException exception = new IOException("test exception");
40
41 @SuppressWarnings("resource")
42 @BeforeEach
43 public void beforeEach() {
44 stringInputStream = UncheckedFilterInputStream.builder()
45 .setInputStream(new BufferedInputStream(CharSequenceInputStream.builder().setCharSequence("01").get())).get();
46 exception = new IOException("test exception");
47 brokenInputStream = UncheckedFilterInputStream.builder().setInputStream(new BrokenInputStream(exception)).get();
48 }
49
50 @Test
51 public void testClose() {
52 stringInputStream.close();
53 assertThrows(UncheckedIOException.class, () -> brokenInputStream.read());
54 }
55
56 @Test
57 public void testCloseThrows() {
58 assertEquals(exception, assertThrows(UncheckedIOException.class, () -> brokenInputStream.close()).getCause());
59 }
60
61 @Test
62 public void testMarkReset() {
63 stringInputStream.mark(10);
64 final int c = stringInputStream.read();
65 stringInputStream.reset();
66 assertEquals(c, stringInputStream.read());
67 }
68
69 @Test
70 public void testRead() {
71 final InputStream inputStream = stringInputStream;
72 try (UncheckedFilterInputStream uncheckedReader = UncheckedFilterInputStream.builder().setInputStream(inputStream).get()) {
73 assertEquals('0', uncheckedReader.read());
74 assertEquals('1', uncheckedReader.read());
75 assertEquals(IOUtils.EOF, uncheckedReader.read());
76 assertEquals(IOUtils.EOF, uncheckedReader.read());
77 }
78 }
79
80 @Test
81 public void testReadByteArray() {
82 final InputStream inputStream = stringInputStream;
83 try (UncheckedFilterInputStream uncheckedReader = UncheckedFilterInputStream.builder().setInputStream(inputStream).get()) {
84 final byte[] array = new byte[1];
85 assertEquals(1, uncheckedReader.read(array));
86 assertEquals('0', array[0]);
87 array[0] = 0;
88 assertEquals(1, uncheckedReader.read(array));
89 assertEquals('1', array[0]);
90 array[0] = 0;
91 assertEquals(IOUtils.EOF, uncheckedReader.read(array));
92 assertEquals(0, array[0]);
93 assertEquals(IOUtils.EOF, uncheckedReader.read(array));
94 assertEquals(0, array[0]);
95 }
96 }
97
98 @Test
99 public void testReadByteArrayIndexed() {
100 final InputStream inputStream = stringInputStream;
101 try (UncheckedFilterInputStream uncheckedReader = UncheckedFilterInputStream.builder().setInputStream(inputStream).get()) {
102 final byte[] array = new byte[1];
103 assertEquals(1, uncheckedReader.read(array, 0, 1));
104 assertEquals('0', array[0]);
105 array[0] = 0;
106 assertEquals(1, uncheckedReader.read(array, 0, 1));
107 assertEquals('1', array[0]);
108 array[0] = 0;
109 assertEquals(IOUtils.EOF, uncheckedReader.read(array, 0, 1));
110 assertEquals(0, array[0]);
111 assertEquals(IOUtils.EOF, uncheckedReader.read(array, 0, 1));
112 assertEquals(0, array[0]);
113 }
114 }
115
116 @Test
117 public void testReadByteArrayIndexedThrows() {
118 assertEquals(exception, assertThrows(UncheckedIOException.class, () -> brokenInputStream.read(new byte[1], 0, 1)).getCause());
119 }
120
121 @Test
122 public void testReadByteArrayThrows() {
123 assertEquals(exception, assertThrows(UncheckedIOException.class, () -> brokenInputStream.read(new byte[1])).getCause());
124 }
125
126 @Test
127 public void testReadThrows() {
128 assertEquals(exception, assertThrows(UncheckedIOException.class, () -> brokenInputStream.read()).getCause());
129 }
130
131 @Test
132 public void testResetThrows() {
133 try (UncheckedFilterInputStream closedReader = UncheckedFilterInputStream.builder().setInputStream(ClosedInputStream.INSTANCE).get()) {
134 closedReader.close();
135 assertThrows(UncheckedIOException.class, () -> brokenInputStream.reset());
136 }
137 }
138
139 @Test
140 public void testSkip() {
141 assertEquals(1, stringInputStream.skip(1));
142 }
143
144 @Test
145 public void testSkipThrows() {
146 assertEquals(exception, assertThrows(UncheckedIOException.class, () -> brokenInputStream.skip(1)).getCause());
147 }
148
149 }