[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.BufferedReader;
|
||||||
import java.io.FileReader;
|
import java.io.FileReader;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
public class BufferedReaderExample {
|
public class BufferedReaderExample {
|
||||||
|
|
||||||
@ -19,14 +20,12 @@ public class BufferedReaderExample {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public String readAllLinesWithStream(BufferedReader reader) {
|
public String readAllLinesWithStream(BufferedReader reader) {
|
||||||
StringBuilder content = new StringBuilder();
|
return reader
|
||||||
reader.lines()
|
.lines()
|
||||||
.forEach(line -> content.append(line)
|
.collect(Collectors.joining(System.lineSeparator()));
|
||||||
.append(System.lineSeparator()));
|
|
||||||
return content.toString();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public String readAllCharacters(BufferedReader reader) throws IOException {
|
public String readAllCharsOneByOne(BufferedReader reader) throws IOException {
|
||||||
StringBuilder content = new StringBuilder();
|
StringBuilder content = new StringBuilder();
|
||||||
|
|
||||||
int value;
|
int value;
|
||||||
@ -37,43 +36,18 @@ public class BufferedReaderExample {
|
|||||||
return content.toString();
|
return content.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
public String readAllCharactersUsingArray(BufferedReader reader) throws IOException {
|
public String readMultipleChars(BufferedReader reader) throws IOException {
|
||||||
StringBuilder content = new StringBuilder();
|
char[] chars = new char[5];
|
||||||
|
int charsRead = reader.read(chars, 0, 5);
|
||||||
|
|
||||||
char[] buf = new char[512];
|
String result;
|
||||||
int charsRead;
|
if (charsRead != -1) {
|
||||||
|
result = new String(chars);
|
||||||
while ((charsRead = reader.read(buf, 0, buf.length)) != -1) {
|
} else {
|
||||||
content.append(buf, 0, charsRead);
|
result = "";
|
||||||
}
|
}
|
||||||
|
|
||||||
return content.toString();
|
return result;
|
||||||
}
|
|
||||||
|
|
||||||
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();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public String readFile() {
|
public String readFile() {
|
||||||
|
@ -1,13 +1,14 @@
|
|||||||
package com.baeldung.bufferedreader;
|
package com.baeldung.bufferedreader;
|
||||||
|
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.springframework.util.StringUtils;
|
|
||||||
|
|
||||||
import java.io.BufferedReader;
|
import java.io.BufferedReader;
|
||||||
import java.io.FileReader;
|
import java.io.FileReader;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
import java.io.StringReader;
|
||||||
|
|
||||||
import static org.assertj.core.api.Assertions.assertThat;
|
import static org.assertj.core.api.Assertions.assertThat;
|
||||||
|
import static org.junit.Assert.assertEquals;
|
||||||
|
|
||||||
public class BufferedReaderExampleUnitTest {
|
public class BufferedReaderExampleUnitTest {
|
||||||
|
|
||||||
@ -44,47 +45,25 @@ public class BufferedReaderExampleUnitTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void givenBufferedReader_whenReadAllCharacters_thenReturnsContent() throws IOException {
|
public void givenBufferedReader_whenReadAllCharsOneByOne_thenReturnsContent() throws IOException {
|
||||||
BufferedReader reader = new BufferedReader(new FileReader(FILE_NAME));
|
BufferedReader reader = new BufferedReader(new FileReader(FILE_NAME));
|
||||||
|
|
||||||
BufferedReaderExample bre = new BufferedReaderExample();
|
BufferedReaderExample bre = new BufferedReaderExample();
|
||||||
String content = bre.readAllCharacters(reader);
|
String content = bre.readAllCharsOneByOne(reader);
|
||||||
|
|
||||||
assertThat(content).isNotEmpty();
|
assertThat(content).isNotEmpty();
|
||||||
assertThat(content).contains("Lorem ipsum");
|
assertThat(content).contains("Lorem ipsum");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void givenBufferedReader_whenReadAllCharactersUsingArray_thenReturnsContent() throws IOException {
|
public void givenBufferedReader_whenReadMultipleChars_thenReturnsContent() throws IOException {
|
||||||
BufferedReader reader = new BufferedReader(new FileReader(FILE_NAME));
|
BufferedReader reader = new BufferedReader(new FileReader(FILE_NAME));
|
||||||
|
|
||||||
BufferedReaderExample bre = new BufferedReaderExample();
|
BufferedReaderExample bre = new BufferedReaderExample();
|
||||||
String content = bre.readAllCharactersUsingArray(reader);
|
String content = bre.readMultipleChars(reader);
|
||||||
|
|
||||||
assertThat(content).isNotEmpty();
|
assertThat(content).isNotEmpty();
|
||||||
assertThat(content).contains("Lorem ipsum");
|
assertThat(content).contains("Lorem");
|
||||||
}
|
|
||||||
|
|
||||||
@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);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@ -95,4 +74,37 @@ public class BufferedReaderExampleUnitTest {
|
|||||||
assertThat(content.toString()).contains("Lorem ipsum");
|
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