Skip to content

Commit 41c73e3

Browse files
author
Gary Gregory
committed
Add tests.
1 parent 085226e commit 41c73e3

1 file changed

Lines changed: 58 additions & 7 deletions

File tree

src/test/java/org/apache/commons/io/input/BoundedReaderTest.java

Lines changed: 58 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -22,18 +22,28 @@
2222
import static org.junit.Assert.assertTrue;
2323

2424
import java.io.BufferedReader;
25+
import java.io.File;
26+
import java.io.FileReader;
2527
import java.io.IOException;
28+
import java.io.LineNumberReader;
2629
import java.io.Reader;
2730
import java.io.StringReader;
31+
import java.nio.charset.StandardCharsets;
32+
import java.nio.file.Files;
33+
import java.nio.file.Path;
2834
import java.util.concurrent.atomic.AtomicBoolean;
2935

36+
import org.apache.commons.io.FileUtils;
3037
import org.junit.Test;
3138

32-
public class BoundedReaderTest
33-
{
34-
private final Reader sr = new BufferedReader( new StringReader( "01234567890" ) );
39+
public class BoundedReaderTest {
40+
private static final String STRING_END_NO_EOL = "0\n1\n2";
3541

36-
private final Reader shortReader = new BufferedReader( new StringReader( "01" ) );
42+
private static final String STRING_END_EOL = "0\n1\n2\n";
43+
44+
private final Reader sr = new BufferedReader(new StringReader("01234567890"));
45+
46+
private final Reader shortReader = new BufferedReader(new StringReader("01"));
3747

3848
@Test
3949
public void readTillEnd() throws IOException {
@@ -101,7 +111,6 @@ public void markReset() throws IOException {
101111
}
102112
}
103113

104-
105114
@Test
106115
public void markResetWithMarkOutsideBoundedReaderMax() throws IOException {
107116
try (final BoundedReader mr = new BoundedReader(sr, 3)) {
@@ -181,12 +190,54 @@ public void close() throws IOException {
181190
assertTrue(closed.get());
182191
}
183192

193+
private void testLineNumberReader(final Reader source) throws IOException {
194+
try (LineNumberReader reader = new LineNumberReader(new BoundedReader(source, 10_000_000))) {
195+
while (reader.readLine() != null) {
196+
// noop
197+
}
198+
}
199+
}
200+
201+
@Test(timeout = 5000)
202+
public void testLineNumberReaderAndStringReaderLastLineEolNo() throws IOException {
203+
testLineNumberReader(new StringReader(STRING_END_NO_EOL));
204+
}
205+
206+
@Test(timeout = 5000)
207+
public void testLineNumberReaderAndStringReaderLastLineEolYes() throws IOException {
208+
testLineNumberReader(new StringReader(STRING_END_EOL));
209+
}
210+
211+
@Test(timeout = 5000)
212+
public void testLineNumberReaderAndFileReaderLastLineEolNo() throws IOException {
213+
testLineNumberReaderAndFileReaderLastLine(STRING_END_NO_EOL);
214+
}
215+
216+
@Test(timeout = 5000)
217+
public void testLineNumberReaderAndFileReaderLastLineEolYes() throws IOException {
218+
testLineNumberReaderAndFileReaderLastLine(STRING_END_EOL);
219+
}
220+
221+
public void testLineNumberReaderAndFileReaderLastLine(final String data) throws IOException {
222+
final Path path = Files.createTempFile(getClass().getSimpleName(), ".txt");
223+
try {
224+
final File file = path.toFile();
225+
FileUtils.write(file, data, StandardCharsets.ISO_8859_1);
226+
try (FileReader source = new FileReader(file)) {
227+
testLineNumberReader(source);
228+
}
229+
} finally {
230+
Files.delete(path);
231+
}
232+
}
233+
184234
@Test(timeout = 5000)
185235
public void testReadBytesEOF() throws IOException {
186-
final BoundedReader mr = new BoundedReader( sr, 3 );
187-
try ( BufferedReader br = new BufferedReader( mr ) ) {
236+
final BoundedReader mr = new BoundedReader(sr, 3);
237+
try (BufferedReader br = new BufferedReader(mr)) {
188238
br.readLine();
189239
br.readLine();
190240
}
191241
}
242+
192243
}

0 commit comments

Comments
 (0)