
test.it.unimi.dsi.fastutil.io.FastBufferedOutputStreamTest Maven / Gradle / Ivy
The newest version!
package it.unimi.dsi.fastutil.io;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.channels.FileChannel;
import java.util.Arrays;
import java.util.Random;
import org.junit.Test;
import static org.junit.Assert.*;
public class FastBufferedOutputStreamTest {
private static final boolean DEBUG = false;
@Test
public void testWriteEqualToBufferSize() throws IOException {
final FastBufferedOutputStream fbos = new FastBufferedOutputStream( new ByteArrayOutputStream(), 4 );
fbos.write( 0 );
fbos.write( new byte[ 4 ] );
fbos.write( 0 );
}
public void testRandom( int bufSize ) throws FileNotFoundException, IOException {
File file = File.createTempFile( getClass().getSimpleName(), "test" );
file.deleteOnExit();
FastBufferedOutputStream fbos = new FastBufferedOutputStream( new FileOutputStream( file + "1" ), bufSize );
FileOutputStream bos = new FileOutputStream( file + "2" );
FileChannel fc = bos.getChannel();
Random r = new Random();
long pos, len;
int j = r.nextInt( 10000 );
while( j-- != 0 ) {
switch( r.nextInt( 6 ) ) {
case 0:
int x = (byte)r.nextInt();
fbos.write( x );
bos.write(x );
break;
case 1:
byte[] b = new byte[ r.nextInt( 32768 ) + 16 ];
for( int i = 0; i < b.length; i++ ) b[ i ] = (byte)r.nextInt();
int offset = r.nextInt( b.length / 4 );
int length = r.nextInt( b.length - offset );
fbos.write( b, offset, length );
bos.write( b, offset, length );
break;
case 2:
fbos.flush();
break;
case 3:
if ( DEBUG ) System.err.println("position()" );
pos = (int)fbos.position();
assertEquals( (int)fc.position(), pos );
break;
case 4:
assertEquals( fc.size(), len = fbos.length() );
pos = len != 0 ? r.nextInt( (int)len ) : 0;
fbos.position( pos );
fc.position( pos );
if ( DEBUG ) System.err.println("position(" + pos + ")" );
break;
}
}
fbos.close();
bos.close();
assertTrue( Arrays.equals( BinIO.loadBytes( file + "1" ), BinIO.loadBytes( file + "2" ) ) );
}
@Test
public void testRandom() throws FileNotFoundException, IOException {
testRandom( 1 );
testRandom( 2 );
testRandom( 3 );
testRandom( 1024 );
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy