1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.commons.io.input;
18
19 import static org.junit.jupiter.api.Assertions.assertEquals;
20 import static org.junit.jupiter.api.Assertions.assertThrows;
21 import static org.junit.jupiter.api.Assertions.assertTrue;
22
23 import java.io.IOException;
24 import java.io.Reader;
25 import java.io.StringReader;
26 import java.io.UncheckedIOException;
27 import java.nio.CharBuffer;
28
29 import org.apache.commons.io.IOUtils;
30 import org.junit.jupiter.api.BeforeEach;
31 import org.junit.jupiter.api.Test;
32
33
34
35
36 public class UncheckedFilterReaderTest {
37
38 private UncheckedFilterReader ucStringReader;
39 private UncheckedFilterReader ucBrokenReader;
40 private IOException exception = new IOException("test exception");
41
42 @SuppressWarnings("resource")
43 @BeforeEach
44 public void beforeEach() {
45 ucStringReader = UncheckedFilterReader.builder().setReader(new StringReader("01")).get();
46 exception = new IOException("test exception");
47 ucBrokenReader = UncheckedFilterReader.builder().setReader(new BrokenReader(exception)).get();
48 }
49
50 @Test
51 public void testClose() {
52 ucStringReader.close();
53 assertThrows(UncheckedIOException.class, () -> ucBrokenReader.read());
54 }
55
56 @Test
57 public void testCloseThrows() {
58 assertEquals(exception, assertThrows(UncheckedIOException.class, () -> ucBrokenReader.close()).getCause());
59 }
60
61 @Test
62 public void testMarkReset() {
63 ucStringReader.mark(10);
64 final int c = ucStringReader.read();
65 ucStringReader.reset();
66 assertEquals(c, ucStringReader.read());
67 }
68
69 @Test
70 public void testMarkThrows() {
71 try (UncheckedFilterReader closedReader = UncheckedFilterReader.builder().setReader(ClosedReader.INSTANCE).get()) {
72 closedReader.close();
73 assertThrows(UncheckedIOException.class, () -> closedReader.mark(1));
74 }
75 }
76
77 @Test
78 public void testRead() {
79 final Reader reader = ucStringReader;
80 try (UncheckedFilterReader uncheckedReader = UncheckedFilterReader.builder().setReader(reader).get()) {
81 assertEquals('0', uncheckedReader.read());
82 assertEquals('1', uncheckedReader.read());
83 assertEquals(IOUtils.EOF, uncheckedReader.read());
84 assertEquals(IOUtils.EOF, uncheckedReader.read());
85 }
86 }
87
88 @Test
89 public void testReadCharArray() {
90 final Reader reader = ucStringReader;
91 try (UncheckedFilterReader uncheckedReader = UncheckedFilterReader.builder().setReader(reader).get()) {
92 final char[] array = new char[1];
93 assertEquals(1, uncheckedReader.read(array));
94 assertEquals('0', array[0]);
95 array[0] = 0;
96 assertEquals(1, uncheckedReader.read(array));
97 assertEquals('1', array[0]);
98 array[0] = 0;
99 assertEquals(IOUtils.EOF, uncheckedReader.read(array));
100 assertEquals(0, array[0]);
101 assertEquals(IOUtils.EOF, uncheckedReader.read(array));
102 assertEquals(0, array[0]);
103 }
104 }
105
106 @Test
107 public void testReadCharArrayIndexed() {
108 final Reader reader = ucStringReader;
109 try (UncheckedFilterReader uncheckedReader = UncheckedFilterReader.builder().setReader(reader).get()) {
110 final char[] array = new char[1];
111 assertEquals(1, uncheckedReader.read(array, 0, 1));
112 assertEquals('0', array[0]);
113 array[0] = 0;
114 assertEquals(1, uncheckedReader.read(array, 0, 1));
115 assertEquals('1', array[0]);
116 array[0] = 0;
117 assertEquals(IOUtils.EOF, uncheckedReader.read(array, 0, 1));
118 assertEquals(0, array[0]);
119 assertEquals(IOUtils.EOF, uncheckedReader.read(array, 0, 1));
120 assertEquals(0, array[0]);
121 }
122 }
123
124 @Test
125 public void testReadCharArrayIndexedThrows() {
126 assertEquals(exception, assertThrows(UncheckedIOException.class, () -> ucBrokenReader.read(new char[1], 0, 1)).getCause());
127 }
128
129 @Test
130 public void testReadCharArrayThrows() {
131 assertEquals(exception, assertThrows(UncheckedIOException.class, () -> ucBrokenReader.read(new char[1])).getCause());
132 }
133
134 @Test
135 public void testReadCharBuffer() {
136 final Reader reader = ucStringReader;
137 try (UncheckedFilterReader uncheckedReader = UncheckedFilterReader.builder().setReader(reader).get()) {
138 final CharBuffer buffer = CharBuffer.wrap(new char[1]);
139 assertEquals(1, uncheckedReader.read(buffer));
140 buffer.flip();
141 assertEquals('0', buffer.charAt(0));
142 buffer.put(0, (char) 0);
143 assertEquals(1, uncheckedReader.read(buffer));
144 buffer.flip();
145 assertEquals('1', buffer.charAt(0));
146 buffer.put(0, (char) 0);
147 assertEquals(IOUtils.EOF, uncheckedReader.read(buffer));
148 buffer.flip();
149 assertEquals(0, buffer.length());
150 assertEquals(0, uncheckedReader.read(buffer));
151 buffer.flip();
152 assertEquals(0, buffer.length());
153 }
154 }
155
156 @Test
157 public void testReadCharBufferThrows() {
158 assertEquals(exception, assertThrows(UncheckedIOException.class, () -> ucBrokenReader.read(CharBuffer.wrap(new char[1]))).getCause());
159 }
160
161 @Test
162 public void testReadThrows() {
163 assertEquals(exception, assertThrows(UncheckedIOException.class, () -> ucBrokenReader.read()).getCause());
164 }
165
166 @Test
167 public void testReady() {
168 assertTrue(ucStringReader.ready());
169 }
170
171 @Test
172 public void testReadyThrows() {
173 assertEquals(exception, assertThrows(UncheckedIOException.class, () -> ucBrokenReader.ready()).getCause());
174 }
175
176 @Test
177 public void testResetThrows() {
178 try (UncheckedFilterReader closedReader = UncheckedFilterReader.builder().setReader(ClosedReader.INSTANCE).get()) {
179 closedReader.close();
180 assertThrows(UncheckedIOException.class, () -> ucBrokenReader.reset());
181 }
182 }
183
184 @Test
185 public void testSkip() {
186 assertEquals(1, ucStringReader.skip(1));
187 }
188
189 @Test
190 public void testSkipThrows() {
191 assertEquals(exception, assertThrows(UncheckedIOException.class, () -> ucBrokenReader.skip(1)).getCause());
192 }
193
194 }