}
@Test
public void testArrayClassBuilder() throws Exception
{
UnsafeByteArrayOutputStream os;
byte[] b;
Builder<Object[]> osb = Builder.register(Object[].class);
os = new UnsafeByteArrayOutputStream();
osb.writeTo(new Object[]{ new String[0] }, os);
b = os.toByteArray();
Builder<long[]> lsb = Builder.register(long[].class);
os = new UnsafeByteArrayOutputStream();
lsb.writeTo(new long[]{ 1,121232,-3,4,-5,61321432413l }, os);
lsb.writeTo(new long[]{ 1,121232,-3,4,-5,61321432413l }, os);
lsb.writeTo(new long[]{ 1,2,3,12131314,123132313135l,-6 }, os);
b = os.toByteArray();
long[] ls = lsb.parseFrom(b);
assertEquals(ls.length, 6);
Builder<byte[]> bsb = Builder.register(byte[].class);
os = new UnsafeByteArrayOutputStream();
bsb.writeTo("i am a string.".getBytes(), os);
b = os.toByteArray();
Builder<int[][]> iisb = Builder.register(int[][].class);
os = new UnsafeByteArrayOutputStream();
iisb.writeTo(new int[][]{ {1,2,3,4}, {5,6,7,8}, {9,10}, {122,123,444} }, os);
b = os.toByteArray();
int[][] iis = iisb.parseFrom(b);
assertEquals(iis.length, 4);
Builder<int[][][]> iiisb = Builder.register(int[][][].class);
os = new UnsafeByteArrayOutputStream();
iiisb.writeTo(new int[][][]{
{{1,2,3,4}},
{{5,6,7,8}},
{{122,123,444}}
}, os);
b = os.toByteArray();
int[][][] iii = iiisb.parseFrom(b);
assertEquals(iii.length, 3);
}