Merge branch 'release-0.1.6' master v0.1.6
authorDavid ‘Bombe’ Roden <bombe@freenetproject.org>
Sat, 5 May 2018 22:17:53 +0000 (00:17 +0200)
committerDavid ‘Bombe’ Roden <bombe@freenetproject.org>
Sat, 5 May 2018 22:17:53 +0000 (00:17 +0200)
pom.xml
src/main/java/net/pterodactylus/fcp/FcpUtils.java
src/test/java/net/pterodactylus/fcp/TempInputStreamTest.java [new file with mode: 0644]

diff --git a/pom.xml b/pom.xml
index 0e761e4..c9f0dd9 100644 (file)
--- a/pom.xml
+++ b/pom.xml
@@ -2,7 +2,7 @@
        <modelVersion>4.0.0</modelVersion>
        <groupId>net.pterodactylus</groupId>
        <artifactId>jFCPlib</artifactId>
-       <version>0.1.5</version>
+       <version>0.1.6</version>
        <name>jFCPlib</name>
        <packaging>jar</packaging>
        <distributionManagement>
@@ -23,6 +23,7 @@
                        <groupId>org.hamcrest</groupId>
                        <artifactId>hamcrest-integration</artifactId>
                        <version>1.3</version>
+                       <scope>test</scope>
                </dependency>
                <dependency>
                        <groupId>com.google.guava</groupId>
index b809f5d..b83de58 100644 (file)
@@ -353,7 +353,7 @@ public class FcpUtils {
                                FileOutputStream fileOutputStream = null;
                                try {
                                        fileOutputStream = new FileOutputStream(tempFile);
-                                       FcpUtils.copy(originalInputStream, fileOutputStream);
+                                       FcpUtils.copy(originalInputStream, fileOutputStream, length);
                                        fileInputStream = new FileInputStream(tempFile);
                                } finally {
                                        FcpUtils.close(fileOutputStream);
diff --git a/src/test/java/net/pterodactylus/fcp/TempInputStreamTest.java b/src/test/java/net/pterodactylus/fcp/TempInputStreamTest.java
new file mode 100644 (file)
index 0000000..e3f2442
--- /dev/null
@@ -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);
+       }
+
+}