[BAEL-2255] - implement more meaningful unit-test-like code examples for skip, mark and reset methods
This commit is contained in:
parent
67cfde81f3
commit
7fa876cc6c
@ -3,6 +3,7 @@ package com.baeldung.bufferedreader;
|
||||
import java.io.BufferedReader;
|
||||
import java.io.FileReader;
|
||||
import java.io.IOException;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
public class BufferedReaderExample {
|
||||
|
||||
@ -19,14 +20,12 @@ public class BufferedReaderExample {
|
||||
}
|
||||
|
||||
public String readAllLinesWithStream(BufferedReader reader) {
|
||||
StringBuilder content = new StringBuilder();
|
||||
reader.lines()
|
||||
.forEach(line -> content.append(line)
|
||||
.append(System.lineSeparator()));
|
||||
return content.toString();
|
||||
return reader
|
||||
.lines()
|
||||
.collect(Collectors.joining(System.lineSeparator()));
|
||||
}
|
||||
|
||||
public String readAllCharacters(BufferedReader reader) throws IOException {
|
||||
public String readAllCharsOneByOne(BufferedReader reader) throws IOException {
|
||||
StringBuilder content = new StringBuilder();
|
||||
|
||||
int value;
|
||||
@ -37,43 +36,18 @@ public class BufferedReaderExample {
|
||||
return content.toString();
|
||||
}
|
||||
|
||||
public String readAllCharactersUsingArray(BufferedReader reader) throws IOException {
|
||||
StringBuilder content = new StringBuilder();
|
||||
public String readMultipleChars(BufferedReader reader) throws IOException {
|
||||
char[] chars = new char[5];
|
||||
int charsRead = reader.read(chars, 0, 5);
|
||||
|
||||
char[] buf = new char[512];
|
||||
int charsRead;
|
||||
|
||||
while ((charsRead = reader.read(buf, 0, buf.length)) != -1) {
|
||||
content.append(buf, 0, charsRead);
|
||||
String result;
|
||||
if (charsRead != -1) {
|
||||
result = new String(chars);
|
||||
} else {
|
||||
result = "";
|
||||
}
|
||||
|
||||
return content.toString();
|
||||
}
|
||||
|
||||
public String readWithSkipping(BufferedReader reader) throws IOException {
|
||||
StringBuilder content = new StringBuilder();
|
||||
|
||||
int value;
|
||||
while ((value = reader.read()) != -1) {
|
||||
content.append((char) value);
|
||||
reader.skip(4);
|
||||
}
|
||||
|
||||
return content.toString();
|
||||
}
|
||||
|
||||
public String markAndReset(BufferedReader reader) throws IOException {
|
||||
StringBuilder content = new StringBuilder();
|
||||
|
||||
reader.mark(512);
|
||||
|
||||
for (int i = 0; i < 3; i++) {
|
||||
content.append(reader.readLine());
|
||||
reader.reset();
|
||||
reader.mark(512);
|
||||
}
|
||||
|
||||
return content.toString();
|
||||
return result;
|
||||
}
|
||||
|
||||
public String readFile() {
|
||||
|
@ -1,13 +1,14 @@
|
||||
package com.baeldung.bufferedreader;
|
||||
|
||||
import org.junit.Test;
|
||||
import org.springframework.util.StringUtils;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.FileReader;
|
||||
import java.io.IOException;
|
||||
import java.io.StringReader;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
import static org.junit.Assert.assertEquals;
|
||||
|
||||
public class BufferedReaderExampleUnitTest {
|
||||
|
||||
@ -44,47 +45,25 @@ public class BufferedReaderExampleUnitTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void givenBufferedReader_whenReadAllCharacters_thenReturnsContent() throws IOException {
|
||||
public void givenBufferedReader_whenReadAllCharsOneByOne_thenReturnsContent() throws IOException {
|
||||
BufferedReader reader = new BufferedReader(new FileReader(FILE_NAME));
|
||||
|
||||
BufferedReaderExample bre = new BufferedReaderExample();
|
||||
String content = bre.readAllCharacters(reader);
|
||||
String content = bre.readAllCharsOneByOne(reader);
|
||||
|
||||
assertThat(content).isNotEmpty();
|
||||
assertThat(content).contains("Lorem ipsum");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void givenBufferedReader_whenReadAllCharactersUsingArray_thenReturnsContent() throws IOException {
|
||||
public void givenBufferedReader_whenReadMultipleChars_thenReturnsContent() throws IOException {
|
||||
BufferedReader reader = new BufferedReader(new FileReader(FILE_NAME));
|
||||
|
||||
BufferedReaderExample bre = new BufferedReaderExample();
|
||||
String content = bre.readAllCharactersUsingArray(reader);
|
||||
String content = bre.readMultipleChars(reader);
|
||||
|
||||
assertThat(content).isNotEmpty();
|
||||
assertThat(content).contains("Lorem ipsum");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void givenBufferedReader_whenReadWithSkipping_thenReturnsScrambledContent() throws IOException {
|
||||
BufferedReader reader = new BufferedReader(new FileReader(FILE_NAME));
|
||||
|
||||
BufferedReaderExample bre = new BufferedReaderExample();
|
||||
String content = bre.readWithSkipping(reader);
|
||||
|
||||
assertThat(content).isNotEmpty();
|
||||
assertThat(content).contains("L mottneas");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void givenBufferedReader_whenMarkAndReset_thenReturnsRepeatedContent() throws IOException {
|
||||
BufferedReader reader = new BufferedReader(new FileReader(FILE_NAME));
|
||||
|
||||
BufferedReaderExample bre = new BufferedReaderExample();
|
||||
String content = bre.markAndReset(reader);
|
||||
|
||||
assertThat(content.toString()).isNotEmpty();
|
||||
assertThat(StringUtils.countOccurrencesOf(content.toString(), "Lorem ipsum")).isEqualTo(3);
|
||||
assertThat(content).contains("Lorem");
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -95,4 +74,37 @@ public class BufferedReaderExampleUnitTest {
|
||||
assertThat(content.toString()).contains("Lorem ipsum");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void givenBufferedReader_whenSkipUnderscores_thenOk() throws IOException {
|
||||
StringBuilder result = new StringBuilder();
|
||||
|
||||
try (BufferedReader reader = new BufferedReader(new StringReader("1__2__3__4__5"))) {
|
||||
int value;
|
||||
while((value = reader.read()) != -1) {
|
||||
result.append((char) value);
|
||||
reader.skip(2L);
|
||||
}
|
||||
}
|
||||
|
||||
assertEquals("12345", result.toString());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void givenBufferedReader_whenSkipsWhitespacesAtBeginning_thenOk() throws IOException {
|
||||
String result;
|
||||
|
||||
try (BufferedReader reader = new BufferedReader(new StringReader(" Lorem ipsum dolor sit amet."))) {
|
||||
reader.mark(1);
|
||||
|
||||
while (Character.isWhitespace(reader.read())) {
|
||||
reader.mark(1);
|
||||
}
|
||||
|
||||
reader.reset();
|
||||
result = reader.readLine();
|
||||
}
|
||||
|
||||
assertEquals("Lorem ipsum dolor sit amet.", result);
|
||||
}
|
||||
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user