package it.unimi.dsi.io;
import it.unimi.dsi.fastutil.io.FastByteArrayInputStream;
import it.unimi.dsi.io.SegmentedInputStream;
import java.io.IOException;
import junit.framework.TestCase;
public class SegmentedInputStreamTest extends TestCase {
private FastByteArrayInputStream stream = new FastByteArrayInputStream(
new byte[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13 }
);
private SegmentedInputStream sis;
public void setUp() throws IllegalArgumentException, IOException {
sis = new SegmentedInputStream( stream );
sis.addBlock( 0, 1, 2 );
sis.addBlock( 2, 3, 4 );
sis.addBlock( 6, 7, 8 );
sis.addBlock( 8, 11, 14 );
}
public void testResetClose() throws IOException {
assertEquals( 0, sis.read() );
sis.reset();
assertEquals( 1, sis.read() );
sis.reset();
assertEquals( -1, sis.read() );
sis.close();
assertEquals( 2, sis.read() );
sis.reset();
assertEquals( 3, sis.read() );
sis.reset();
assertEquals( -1, sis.read() );
sis.close();
assertEquals( 6, sis.read() );
sis.reset();
assertEquals( 7, sis.read() );
sis.reset();
assertEquals( -1, sis.read() );
}
public void testRead() throws IOException {
final byte[] b = new byte[ 11 ];
assertEquals( 1, sis.read( b, 0, 10 ) );
assertEquals( 0, b[ 0 ] );
sis.reset();
assertEquals( 1, sis.read( b, 1, 10 ) );
assertEquals( 1, b[ 1 ] );
sis.close();
assertEquals( 1, sis.read( b, 5, 5 ) );
assertEquals( 2, b[ 5 ] );
}
public void testSkip() throws IOException {
assertEquals( 1, sis.skip( 1 ) );
sis.reset();
assertEquals( 1, sis.skip( 10 ) );
sis.reset();
assertEquals( 0, sis.skip( 10 ) );
sis.close();
sis.close();
sis.close();
assertEquals( 2, sis.skip( 2 ) );
assertEquals( 1, sis.skip( 2 ) );
sis.reset();
assertEquals( 3, sis.skip( 10 ) );
}
}