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 UncheckedBufferedReaderTest {
37
38 private UncheckedBufferedReader ucStringReader;
39 private UncheckedBufferedReader ucBrokenReader;
40 private IOException exception = new IOException("test exception");
41
42 @SuppressWarnings("resource")
43 @BeforeEach
44 public void beforeEach() {
45 ucStringReader = UncheckedBufferedReader.builder().setReader(new StringReader("01")).get();
46 exception = new IOException("test exception");
47 ucBrokenReader = UncheckedBufferedReader.builder().setReader(new BrokenReader(exception)).get();
48 }
49
50 @Test
51 public void testBufferSize() {
52 try (UncheckedBufferedReader uncheckedReader = UncheckedBufferedReader.builder().setReader(new StringReader("0123456789")).setBufferSize(2).get()) {
53 assertEquals('0', uncheckedReader.read());
54 }
55 }
56
57 @Test
58 public void testClose() {
59 ucStringReader.close();
60 assertThrows(UncheckedIOException.class, () -> ucBrokenReader.read());
61 }
62
63 @Test
64 public void testCloseThrows() {
65 assertEquals(exception, assertThrows(UncheckedIOException.class, () -> ucBrokenReader.close()).getCause());
66 }
67
68 @Test
69 public void testMarkReset() {
70 ucStringReader.mark(10);
71 final int c = ucStringReader.read();
72 ucStringReader.reset();
73 assertEquals(c, ucStringReader.read());
74 }
75
76 @Test
77 public void testMarkThrows() {
78 try (UncheckedBufferedReader closedReader = UncheckedBufferedReader.builder().setReader(ClosedReader.INSTANCE).get()) {
79 closedReader.close();
80 assertThrows(UncheckedIOException.class, () -> closedReader.mark(1));
81 }
82 }
83
84 @Test
85 public void testRead() {
86 final Reader reader = ucStringReader;
87 try (UncheckedBufferedReader uncheckedReader = UncheckedBufferedReader.builder().setReader(reader).get()) {
88 assertEquals('0', uncheckedReader.read());
89 assertEquals('1', uncheckedReader.read());
90 assertEquals(IOUtils.EOF, uncheckedReader.read());
91 assertEquals(IOUtils.EOF, uncheckedReader.read());
92 }
93 }
94
95 @Test
96 public void testReadCharArray() {
97 final Reader reader = ucStringReader;
98 try (UncheckedBufferedReader uncheckedReader = UncheckedBufferedReader.builder().setReader(reader).get()) {
99 final char[] array = new char[1];
100 assertEquals(1, uncheckedReader.read(array));
101 assertEquals('0', array[0]);
102 array[0] = 0;
103 assertEquals(1, uncheckedReader.read(array));
104 assertEquals('1', array[0]);
105 array[0] = 0;
106 assertEquals(IOUtils.EOF, uncheckedReader.read(array));
107 assertEquals(0, array[0]);
108 assertEquals(IOUtils.EOF, uncheckedReader.read(array));
109 assertEquals(0, array[0]);
110 }
111 }
112
113 @Test
114 public void testReadCharArrayIndexed() {
115 final Reader reader = ucStringReader;
116 try (UncheckedBufferedReader uncheckedReader = UncheckedBufferedReader.builder().setReader(reader).get()) {
117 final char[] array = new char[1];
118 assertEquals(1, uncheckedReader.read(array, 0, 1));
119 assertEquals('0', array[0]);
120 array[0] = 0;
121 assertEquals(1, uncheckedReader.read(array, 0, 1));
122 assertEquals('1', array[0]);
123 array[0] = 0;
124 assertEquals(IOUtils.EOF, uncheckedReader.read(array, 0, 1));
125 assertEquals(0, array[0]);
126 assertEquals(IOUtils.EOF, uncheckedReader.read(array, 0, 1));
127 assertEquals(0, array[0]);
128 }
129 }
130
131 @Test
132 public void testReadCharArrayIndexedThrows() {
133 assertEquals(exception, assertThrows(UncheckedIOException.class, () -> ucBrokenReader.read(new char[1], 0, 1)).getCause());
134 }
135
136 @Test
137 public void testReadCharArrayThrows() {
138 assertEquals(exception, assertThrows(UncheckedIOException.class, () -> ucBrokenReader.read(new char[1])).getCause());
139 }
140
141 @Test
142 public void testReadCharBuffer() {
143 final Reader reader = ucStringReader;
144 try (UncheckedBufferedReader uncheckedReader = UncheckedBufferedReader.builder().setReader(reader).get()) {
145 final CharBuffer buffer = CharBuffer.wrap(new char[1]);
146 assertEquals(1, uncheckedReader.read(buffer));
147 buffer.flip();
148 assertEquals('0', buffer.charAt(0));
149 buffer.put(0, (char) 0);
150 assertEquals(1, uncheckedReader.read(buffer));
151 buffer.flip();
152 assertEquals('1', buffer.charAt(0));
153 buffer.put(0, (char) 0);
154 assertEquals(IOUtils.EOF, uncheckedReader.read(buffer));
155 buffer.flip();
156 assertEquals(0, buffer.length());
157 assertEquals(0, uncheckedReader.read(buffer));
158 buffer.flip();
159 assertEquals(0, buffer.length());
160 }
161 }
162
163 @Test
164 public void testReadCharBufferThrows() {
165 assertEquals(exception, assertThrows(UncheckedIOException.class, () -> ucBrokenReader.read(CharBuffer.wrap(new char[1]))).getCause());
166 }
167
168 @Test
169 public void testReadLine() {
170 final Reader reader = ucStringReader;
171 try (UncheckedBufferedReader uncheckedReader = UncheckedBufferedReader.builder().setReader(reader).get()) {
172 assertEquals("01", uncheckedReader.readLine());
173 assertEquals(IOUtils.EOF, uncheckedReader.read());
174 assertEquals(IOUtils.EOF, uncheckedReader.read());
175 }
176 }
177
178 @Test
179 public void testReadLineThrows() {
180 assertEquals(exception, assertThrows(UncheckedIOException.class, () -> ucBrokenReader.readLine()).getCause());
181 }
182
183 @Test
184 public void testReadThrows() {
185 assertEquals(exception, assertThrows(UncheckedIOException.class, () -> ucBrokenReader.read()).getCause());
186 }
187
188 @Test
189 public void testReady() {
190 assertTrue(ucStringReader.ready());
191 }
192
193 @Test
194 public void testReadyThrows() {
195 assertEquals(exception, assertThrows(UncheckedIOException.class, () -> ucBrokenReader.ready()).getCause());
196 }
197
198 @Test
199 public void testResetThrows() {
200 try (UncheckedBufferedReader closedReader = UncheckedBufferedReader.builder().setReader(ClosedReader.INSTANCE).get()) {
201 closedReader.close();
202 assertThrows(UncheckedIOException.class, () -> ucBrokenReader.reset());
203 }
204 }
205
206 @Test
207 public void testSkip() {
208 assertEquals(1, ucStringReader.skip(1));
209 }
210
211 @Test
212 public void testSkipThrows() {
213 assertEquals(exception, assertThrows(UncheckedIOException.class, () -> ucBrokenReader.skip(1)).getCause());
214 }
215
216 }