X-Git-Url: https://git.pterodactylus.net/?p=jFCPlib.git;a=blobdiff_plain;f=src%2Ftest%2Fjava%2Fnet%2Fpterodactylus%2Ffcp%2FTempInputStreamTest.java;fp=src%2Ftest%2Fjava%2Fnet%2Fpterodactylus%2Ffcp%2FTempInputStreamTest.java;h=e3f24426fbc0ddaafd3f466f877c4410e69247e3;hp=0000000000000000000000000000000000000000;hb=0a7a6f78d22d3057053c4bc4f6dd7a9bedb583e1;hpb=9e1450f53d54cebf81ef2d29aa08c491c895706a diff --git a/src/test/java/net/pterodactylus/fcp/TempInputStreamTest.java b/src/test/java/net/pterodactylus/fcp/TempInputStreamTest.java new file mode 100644 index 0000000..e3f2442 --- /dev/null +++ b/src/test/java/net/pterodactylus/fcp/TempInputStreamTest.java @@ -0,0 +1,54 @@ +package net.pterodactylus.fcp; + +import org.junit.Test; + +import java.io.ByteArrayInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.util.Arrays; + +import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.Matchers.is; +import static org.junit.Assert.assertArrayEquals; + + +public class TempInputStreamTest { + + private byte[] prepareArrayOfNBytes(int n) { + byte[] data = new byte[n]; + for (int i = 0; i < n; ++i) { + data[i] = (byte)i; + } + return data; + } + + private void checkTempInputStreamStoresPartOfAnotherStream(int length, int maxMemoryLength) throws IOException { + byte[] originalData = prepareArrayOfNBytes(length + 1); + InputStream anotherStream = new ByteArrayInputStream(originalData); + FcpUtils.TempInputStream cut = new FcpUtils.TempInputStream(anotherStream, length, maxMemoryLength); + + // check length bytes are read from anotherStream and are accessible from cut + byte[] buffer = new byte[length]; + int n = cut.read(buffer); + assertThat(n, is(length)); + assertArrayEquals(Arrays.copyOf(originalData, length), buffer); + assertThat(cut.read(), is(-1)); // check end of cut stream + + // check the rest of data in anotherStream is still there + n = anotherStream.read(buffer); + assertThat(n, is(1)); + assertThat(buffer[0], is(originalData[originalData.length - 1])); + assertThat(anotherStream.read(), is(-1)); // check end of another stream + } + + @Test + public void tempInputStreamShouldCorrectlyStorePartOfAnotherStreamInMemory() throws IOException { + checkTempInputStreamStoresPartOfAnotherStream(1, 1); + } + + @Test + public void tempInputStreamShouldCorrectlyStorePartOfAnotherStreamInFile() throws IOException { + checkTempInputStreamStoresPartOfAnotherStream(2, 1); + } + +}