package it.unimi.dsi.lang;
import java.io.IOException;
import it.unimi.dsi.fastutil.io.FastByteArrayInputStream;
import it.unimi.dsi.fastutil.io.FastByteArrayOutputStream;
import it.unimi.dsi.lang.MutableString;
import junit.framework.TestCase;
public class MutableStringTest extends TestCase {
public void testSqueezeSpace() {
MutableString s = new MutableString( new char[] { 32, 13, 10, 32, 32, 32, 13, 10, 32, 32, 32, 13, 10, 32, 32, 32, 32, 32 } );
assertEquals( new MutableString( " \r\n \r\n \r\n " ), s.squeezeSpace() );
assertEquals( new MutableString( " " ), s.squeezeWhitespace() );
}
public void testSubsequence() {
MutableString s = new MutableString( "abc" );
CharSequence ss = s.subSequence( 1, 3 );
assertEquals( new MutableString( "bc" ), ss );
assertEquals( 1, ss.subSequence( 1, 2 ).length() );
}
public void testSkipSelfDelimUTF8() throws IOException {
final FastByteArrayOutputStream fastByteArrayOutputStream = new FastByteArrayOutputStream();
new MutableString( "a" ).writeSelfDelimUTF8( fastByteArrayOutputStream );
new MutableString( "b" ).writeSelfDelimUTF8( fastByteArrayOutputStream );
new MutableString( "\u221E" ).writeSelfDelimUTF8( fastByteArrayOutputStream );
new MutableString( "c" ).writeSelfDelimUTF8( fastByteArrayOutputStream );
fastByteArrayOutputStream.flush();
final FastByteArrayInputStream fastByteArrayInputStream = new FastByteArrayInputStream( fastByteArrayOutputStream.array );
assertEquals( "a", new MutableString().readSelfDelimUTF8( fastByteArrayInputStream ).toString() );
assertEquals( "b", new MutableString().readSelfDelimUTF8( fastByteArrayInputStream ).toString() );
assertEquals( 1, MutableString.skipSelfDelimUTF8( fastByteArrayInputStream ) );
assertEquals( "c", new MutableString().readSelfDelimUTF8( fastByteArrayInputStream ).toString() );
fastByteArrayInputStream.position( 0 );
assertEquals( "a", new MutableString().readSelfDelimUTF8( fastByteArrayInputStream ).toString() );
assertEquals( 1, MutableString.skipSelfDelimUTF8( fastByteArrayInputStream ) );
assertEquals( "\uu221E", new MutableString().readSelfDelimUTF8( fastByteArrayInputStream ).toString() );
assertEquals( "c", new MutableString().readSelfDelimUTF8( fastByteArrayInputStream ).toString() );
}
}