package com.netflix.astyanax.model; import java.nio.ByteBuffer; import java.util.UUID; import org.junit.Test; import com.netflix.astyanax.serializers.AbstractSerializer; import com.netflix.astyanax.serializers.AsciiSerializer; import com.netflix.astyanax.serializers.BytesArraySerializer; import com.netflix.astyanax.serializers.IntegerSerializer; import com.netflix.astyanax.serializers.LongSerializer; import com.netflix.astyanax.serializers.StringSerializer; import com.netflix.astyanax.serializers.UUIDSerializer; import static org.junit.Assert.assertArrayEquals; import static org.junit.Assert.assertEquals; public class DynamicCompositeTest { @Test public void testComposite() { DynamicComposite dc = new DynamicComposite(); for ( char ch = 'A'; ch < 'Z'; ch++ ) { dc.addComponent( Character.toString( ch ), StringSerializer.get() ); } } @Test public void testReversedSerialization() { AsciiSerializer asciiSerializer = AsciiSerializer.get(); BytesArraySerializer bytesArraySerializer = BytesArraySerializer.get(); IntegerSerializer integerSerializer = IntegerSerializer.get(); LongSerializer longSerializer = LongSerializer.get(); StringSerializer stringSerializer = StringSerializer.get(); UUIDSerializer uuidSerializer = UUIDSerializer.get(); DynamicComposite dc = new DynamicComposite(); final String string = "test"; final byte[] bytes = new byte[] { 0x00 }; final int intValue = 1; final long longValue = 1l; final UUID uuid = UUID.randomUUID(); dc.addComponent( string, asciiSerializer, getReversed( asciiSerializer ) ); dc.addComponent( bytes, bytesArraySerializer, getReversed( bytesArraySerializer ) ); dc.addComponent( intValue, integerSerializer, getReversed( integerSerializer ) ); dc.addComponent( longValue, longSerializer, getReversed( longSerializer ) ); dc.addComponent( string, stringSerializer, getReversed( stringSerializer ) ); dc.addComponent( uuid, uuidSerializer, getReversed( uuidSerializer ) ); //serialize to bytes ByteBuffer buff = dc.serialize(); //de-serialize DynamicComposite read = DynamicComposite.fromByteBuffer( buff ); assertEquals(6, read.size()); assertEquals(string, read.getComponent( 0 ).getValue( asciiSerializer )); assertArrayEquals( bytes, ( byte[] ) read.getComponent( 1 ).getValue( bytesArraySerializer ) ); assertEquals(intValue, read.getComponent( 2 ).getValue( integerSerializer )); assertEquals(longValue, read.getComponent( 3 ).getValue( longSerializer )); assertEquals(string, read.getComponent( 4 ).getValue( stringSerializer )); assertEquals(uuid, read.getComponent( 5 ).getValue( uuidSerializer )); } private String getReversed( AbstractSerializer serializer ) { return serializer.getComparatorType().getTypeName() + "(reversed=true)"; } }