package com.ctriposs.baiji.io; import org.junit.Assert; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.Parameterized; import java.io.IOException; import java.util.Arrays; import java.util.Collection; @RunWith(Parameterized.class) public class BinaryCodecTestArray extends BinaryCodecTestBase { @Parameterized.Parameters public static Collection<Object[]> data() { return Arrays.asList(new Object[][]{new Object[]{1, new int[]{}}, new Object[]{3, new int[]{0}}, new Object[]{4, new int[]{64}}, new Object[]{6, new int[]{64, 128}}}); } private final int _size; private final int[] _entries; public BinaryCodecTestArray(int size, int[] entries) { _size = size; _entries = entries; } @Test public void testArray() throws IOException { ItemDecoder decoder = new ItemDecoder() { @Override public Object decode(Decoder decoder) throws IOException { int length = (int) decoder.readArrayStart(); int[] entries = new int[length]; if (length != 0) { for (int i = 0; i < length; i++) { entries[i] = decoder.readInt(); } Assert.assertEquals(0, decoder.readArrayNext()); } return entries; } }; ItemEncoder encoder = new ItemEncoder() { @Override public void encode(Encoder encoder, Object obj) throws IOException { int[] entries = (int[]) obj; encoder.writeArrayStart(); encoder.setItemCount(entries.length); for (int i : entries) { encoder.startItem(); encoder.writeInt(i); } encoder.writeArrayEnd(); } }; testRead(_entries, decoder, encoder, _size); } }