/* Copyright 2017 Google Inc. All Rights Reserved. Distributed under MIT license. See file LICENSE for detail or copy at https://opensource.org/licenses/MIT */ package org.brotli.wrapper.dec; import static org.junit.Assert.assertEquals; import org.brotli.integration.BrotliJniTestBase; import java.io.IOException; import java.io.InputStream; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.JUnit4; /** Tests for {@link org.brotli.wrapper.dec.BrotliInputStream}. */ @RunWith(JUnit4.class) public class EagerStreamTest extends BrotliJniTestBase { @Test public void testEagerReading() throws IOException { final StringBuilder log = new StringBuilder(); final byte[] data = {0, 0, 16, 42, 3}; InputStream source = new InputStream() { int index; @Override public int read() { if (index < data.length) { log.append("<").append(index); return data[index++]; } else { log.append("<#"); return -1; } } @Override public int read(byte[] b) throws IOException { return read(b, 0, b.length); } @Override public int read(byte[] b, int off, int len) throws IOException { if (len < 1) { return 0; } int d = read(); if (d == -1) { return 0; } b[off] = (byte) d; return 1; } }; BrotliInputStream reader = new BrotliInputStream(source); reader.enableEagerOutput(); int count = 0; while (true) { log.append("^").append(count); int b = reader.read(); if (b == -1) { log.append(">#"); break; } else { log.append(">").append(count++); } } // Lazy log: ^0<0<1<2<3<4>0^1># assertEquals("^0<0<1<2<3>0^1<4>#", log.toString()); } }