package edu.berkeley.cs.succinct.block;
import junit.framework.TestCase;
import java.util.Arrays;
import java.util.Iterator;
public class ByteArrayBlockSerializerTest extends TestCase {
public void testSerialize() throws Exception {
byte[][] data = new byte[][] {"apple".getBytes(), "banana".getBytes(), "carrot".getBytes()};
Iterator<byte[]> dataIterator = Arrays.asList(data).iterator();
byte recordSeparator = -125;
ByteArrayBlockSerializer serializer = new ByteArrayBlockSerializer(recordSeparator);
BlockSerializer.SerializedData serializedData = serializer.serialize(dataIterator);
// Check offsets
int[] offsets = serializedData.getOffsets();
assertEquals(3, offsets.length);
int curOffset = 1;
for (int i = 0; i < offsets.length; i++) {
assertEquals(offsets[i], curOffset);
curOffset += (data[i].length + 1);
}
// Check metadata
assertEquals(null, serializedData.getMetadata());
// Check serialized data
byte[] expectedSerializedBytes =
new byte[] {recordSeparator, 'a', 'p', 'p', 'l', 'e', recordSeparator, 'b', 'a', 'n', 'a',
'n', 'a', recordSeparator, 'c', 'a', 'r', 'r', 'o', 't', recordSeparator};
assertTrue(Arrays.equals(expectedSerializedBytes, serializedData.getData()));
}
}