BAEL-5745 Mocking InputStream (#12845)
This commit is contained in:
parent
e346b931f7
commit
c4052100a0
|
@ -0,0 +1,23 @@
|
||||||
|
package com.baeldung.mockinginputstream;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.InputStream;
|
||||||
|
|
||||||
|
public class GeneratingInputStream extends InputStream {
|
||||||
|
private final int desiredSize;
|
||||||
|
private int actualSize = 0;
|
||||||
|
private final byte[] seed;
|
||||||
|
|
||||||
|
public GeneratingInputStream(int desiredSize, String seed) {
|
||||||
|
this.desiredSize = desiredSize;
|
||||||
|
this.seed = seed.getBytes();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int read() {
|
||||||
|
if (actualSize >= desiredSize) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
return seed[actualSize++ % seed.length];
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,59 @@
|
||||||
|
package com.baeldung.mockinginputstream;
|
||||||
|
|
||||||
|
import org.junit.Test;
|
||||||
|
|
||||||
|
import java.io.ByteArrayInputStream;
|
||||||
|
import java.io.FileInputStream;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.InputStream;
|
||||||
|
|
||||||
|
import static org.assertj.core.api.AssertionsForClassTypes.assertThat;
|
||||||
|
|
||||||
|
public class MockingInputStreamUnitTest {
|
||||||
|
@Test
|
||||||
|
public void givenSimpleImplementation_shouldProcessInputStream() throws IOException {
|
||||||
|
int byteCount = processInputStream(new InputStream() {
|
||||||
|
private final byte[] msg = "Hello World".getBytes();
|
||||||
|
private int index = 0;
|
||||||
|
@Override
|
||||||
|
public int read() {
|
||||||
|
if (index >= msg.length) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
return msg[index++];
|
||||||
|
}
|
||||||
|
});
|
||||||
|
assertThat(byteCount).isEqualTo(11);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void givenByteArrayInputStream_shouldProcessInputStream() throws IOException {
|
||||||
|
String msg = "Hello World";
|
||||||
|
int bytesCount = processInputStream(new ByteArrayInputStream(msg.getBytes()));
|
||||||
|
assertThat(bytesCount).isEqualTo(11);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void givenFileInputStream_shouldProcessInputStream() throws IOException {
|
||||||
|
InputStream inputStream = MockingInputStreamUnitTest.class.getResourceAsStream("/mockinginputstreams/msg.txt");
|
||||||
|
int bytesCount = processInputStream(inputStream);
|
||||||
|
assertThat(bytesCount).isEqualTo(11);
|
||||||
|
inputStream.close();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void givenGeneratingInputStream_shouldProcessInputStream() throws IOException {
|
||||||
|
InputStream inputStream = new GeneratingInputStream(10_000, "Hello World");
|
||||||
|
int bytesCount = processInputStream(inputStream);
|
||||||
|
assertThat(bytesCount).isEqualTo(10_000);
|
||||||
|
inputStream.close();
|
||||||
|
}
|
||||||
|
|
||||||
|
int processInputStream(InputStream inputStream) throws IOException {
|
||||||
|
int count = 0;
|
||||||
|
while(inputStream.read() != -1) {
|
||||||
|
count++;
|
||||||
|
}
|
||||||
|
return count;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1 @@
|
||||||
|
Hello World
|
Loading…
Reference in New Issue