package org.zalando.riptide.stream; import org.junit.Rule; import org.junit.Test; import org.junit.rules.ExpectedException; import org.springframework.core.io.ClassPathResource; import java.io.InputStream; import static org.hamcrest.Matchers.is; import static org.junit.Assert.assertThat; public class StreamFilterTest { @Rule public final ExpectedException exception = ExpectedException.none(); @Test public void shouldFilterOnReadInteger() throws Exception { final InputStream stream = new ClassPathResource("account-sequence.json").getInputStream(); try (final StreamFilter unit = new StreamFilter(stream)) { final int filtered = 3; final int available = stream.available(); int read = 0; while (unit.read() != -1) { read++; } assertThat(read, is(available - filtered)); } } @Test public void shouldFilterOnReadBuffer() throws Exception { final InputStream stream = new ClassPathResource("account-sequence.json").getInputStream(); try (final StreamFilter unit = new StreamFilter(stream)) { final int filtered = 3; final int available = stream.available(); int sum = 0, read; final byte[] buffer = new byte[10]; while ((read = unit.read(buffer, 0, buffer.length)) != -1) { sum += read; } assertThat(sum, is(available - filtered)); } } @Test public void shouldFilterOnSkip() throws Exception { final InputStream stream = new ClassPathResource("account-sequence.json").getInputStream(); try (final StreamFilter unit = new StreamFilter(stream, 5)) { final long filtered = 3; final long available = stream.available(); long sum = 0, skipped; while ((skipped = unit.skip(10)) != 0) { sum += skipped; } assertThat(sum, is(available - filtered)); } } }