[BAEL-2255] - implement more meaningful unit-test-like code examples for skip, mark and reset methods

This commit is contained in:
markoprevisic 2018-10-21 21:56:57 +02:00
parent 67cfde81f3
commit 7fa876cc6c
2 changed files with 54 additions and 68 deletions

View File

@ -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() {

View File

@ -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);
}
}