package it.unimi.dsi.io;
import it.unimi.dsi.fastutil.objects.ObjectIterator;
import it.unimi.dsi.fastutil.objects.ObjectIterators;
import it.unimi.dsi.io.OfflineIterable;
import it.unimi.dsi.lang.MutableString;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import junit.framework.TestCase;
public class OfflineIterableTest extends TestCase {
public void doIt( String[] strings ) throws IOException {
OfflineIterable.Serializer<MutableString,MutableString> stringSerializer = new OfflineIterable.Serializer<MutableString,MutableString>() {
public void read( DataInputStream dis, MutableString x ) throws IOException {
x.readSelfDelimUTF8( (InputStream)dis );
}
public void write( MutableString x, DataOutputStream dos ) throws IOException {
x.writeSelfDelimUTF8( (OutputStream)dos );
}
};
OfflineIterable<MutableString,MutableString> stringIterable = new OfflineIterable<MutableString,MutableString>( stringSerializer, new MutableString() );
for ( String s: strings )
stringIterable.add( new MutableString( s ) );
ObjectIterator<String> shouldBe = ObjectIterators.wrap( strings );
for ( MutableString m: stringIterable )
assertEquals( new MutableString( shouldBe.next() ), m );
assertFalse( shouldBe.hasNext() );
stringIterable.close();
stringIterable.close(); // Twice, to test for safety
}
public void testSimple() throws IOException {
doIt( new String[] { "this", "is", "a", "test" } );
}
public void testEmpty() throws IOException {
doIt( new String[ 0 ] );
}
}