From 7a5ec2af125faff75911d3127c32c9425211e30a Mon Sep 17 00:00:00 2001 From: Torsten Grote Date: Thu, 20 Dec 2018 16:52:22 -0200 Subject: [PATCH] [android] Add test for MarkEnforcingInputStream --- .../MarkEnforcingInputStreamTest.java | 77 +++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 briar-android/src/test/java/org/briarproject/briar/android/conversation/MarkEnforcingInputStreamTest.java diff --git a/briar-android/src/test/java/org/briarproject/briar/android/conversation/MarkEnforcingInputStreamTest.java b/briar-android/src/test/java/org/briarproject/briar/android/conversation/MarkEnforcingInputStreamTest.java new file mode 100644 index 000000000..45a30a499 --- /dev/null +++ b/briar-android/src/test/java/org/briarproject/briar/android/conversation/MarkEnforcingInputStreamTest.java @@ -0,0 +1,77 @@ +package org.briarproject.briar.android.conversation; + +import com.bumptech.glide.util.MarkEnforcingInputStream; + +import org.briarproject.bramble.test.BrambleTestCase; +import org.junit.Test; + +import java.io.BufferedInputStream; +import java.io.ByteArrayInputStream; +import java.io.InputStream; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotEquals; + +public class MarkEnforcingInputStreamTest extends BrambleTestCase { + + private final int readLimit = 4; + private final byte[] bytes = {0x1, 0x2, 0x3, 0x4, 0x5, 0x6}; + + @Test + public void testPlainStreamReadsAllBytes() throws Exception { + InputStream is = getStream(); + is.mark(readLimit); + for (byte ignored : bytes) { + assertNotEquals(-1, is.read()); + } + assertEquals(0, is.available()); + is.close(); + } + + @Test + public void testMarkEnforcingStreamReadsUntilMarkLimit() throws Exception { + InputStream is = new MarkEnforcingInputStream(getStream()); + is.mark(readLimit); + assertEquals(readLimit, is.available()); + for (int i = 0; i < bytes.length; i++) { + if (i < readLimit) { + assertEquals(readLimit - i, is.available()); + assertNotEquals(-1, is.read()); + } else { + assertEquals(0, is.available()); + assertEquals(-1, is.read()); + } + } + assertEquals(0, is.available()); + is.close(); + } + + @Test + public void testMarkEnforcingStreamCanBeReset() throws Exception { + InputStream is = new MarkEnforcingInputStream(getStream()); + is.mark(readLimit); + assertEquals(readLimit, is.available()); + for (int i = 0; i < readLimit; i++) { + assertNotEquals(-1, is.read()); + } + assertEquals(0, is.available()); + is.reset(); + is.mark(readLimit); + assertEquals(readLimit, is.available()); + for (int i = 0; i < bytes.length; i++) { + if (i < readLimit) { + assertEquals(readLimit - i, is.available()); + assertNotEquals(-1, is.read()); + } else { + assertEquals(0, is.available()); + assertEquals(-1, is.read()); + } + } + is.close(); + } + + private InputStream getStream() { + return new BufferedInputStream(new ByteArrayInputStream(bytes)); + } + +}