package it.unimi.dsi.bits;
import it.unimi.dsi.bits.TransformationStrategies;
import junit.framework.TestCase;
public class Utf16TransformationStrategyTest extends TestCase {
public void testGetLong() {
String s = new String( new char[] { '\u0001', '\u0002' } );
assertEquals( 48, TransformationStrategies.prefixFreeUtf16().toBitVector( s ).length() );
assertEquals( 0x40008000L, TransformationStrategies.prefixFreeUtf16().toBitVector( s ).getLong( 0, 32 ) );
assertEquals( 0x40008000L, TransformationStrategies.prefixFreeUtf16().toBitVector( s ).getLong( 0, 48 ) );
s = new String( new char[] { '\u0001', '\u0002', '\u0003' } );
assertEquals( 64, TransformationStrategies.prefixFreeUtf16().toBitVector( s ).length() );
assertEquals( 0xC00040008000L, TransformationStrategies.prefixFreeUtf16().toBitVector( s ).getLong( 0, 48 ) );
assertEquals( 0xC00040008000L, TransformationStrategies.prefixFreeUtf16().toBitVector( s ).getLong( 0, 64 ) );
s = new String( new char[] { '\u0001', '\u0002', '\u0003', '\u0004' } );
assertEquals( 80, TransformationStrategies.prefixFreeUtf16().toBitVector( s ).length() );
assertEquals( 0x2000C00040008000L, TransformationStrategies.prefixFreeUtf16().toBitVector( s ).getLong( 0, 64 ) );
assertEquals( 0, TransformationStrategies.prefixFreeUtf16().toBitVector( s ).getLong( 64, 80 ) );
//System.err.println( Long.toHexString( TransformationStrategies.prefixFreeUtf16().toBitVector( s ).getLong( 16, 80 ) ));
assertEquals( 0x2000C0004000L, TransformationStrategies.prefixFreeUtf16().toBitVector( s ).getLong( 16, 80 ) );
s = new String( new char[] { '\u0001', '\u0002' } );
assertEquals( 32, TransformationStrategies.utf16().toBitVector( s ).length() );
assertEquals( 0x40008000L, TransformationStrategies.utf16().toBitVector( s ).getLong( 0, 32 ) );
s = new String( new char[] { '\u0001', '\u0002', '\u0003' } );
assertEquals( 48, TransformationStrategies.utf16().toBitVector( s ).length() );
assertEquals( 0xC00040008000L, TransformationStrategies.utf16().toBitVector( s ).getLong( 0, 48 ) );
s = new String( new char[] { '\u0001', '\u0002', '\u0003', '\u0004' } );
assertEquals( 64, TransformationStrategies.utf16().toBitVector( s ).length() );
assertEquals( 0x2000C00040008000L, TransformationStrategies.utf16().toBitVector( s ).getLong( 0, 64 ) );
}
}