package com.ctriposs.baiji.io;
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;
import java.util.Random;
@RunWith(Parameterized.class)
public class BinaryCodecTestBytes extends BinaryCodecTestBase {
@Parameterized.Parameters
public static Collection<Object[]> data() {
return Arrays.asList(new Object[][]{new Object[]{0, 1},
new Object[]{5, 1},
new Object[]{63, 1},
new Object[]{64, 2},
new Object[]{8191, 2},
new Object[]{8192, 3}});
}
private final int _dataLength;
private final int _overhead;
public BinaryCodecTestBytes(int dataLength, int overhead) {
_dataLength = dataLength;
_overhead = overhead;
}
@Test
public void testBytes() throws IOException {
final byte[] data = generateRandomBytes(_dataLength);
ItemDecoder decoder = new ItemDecoder() {
@Override
public Object decode(Decoder decoder) throws IOException {
return decoder.readBytes();
}
};
ItemEncoder encoder = new ItemEncoder() {
@Override
public void encode(Encoder encoder, Object obj) throws IOException {
encoder.writeBytes((byte[]) obj);
}
};
testRead(data, decoder, encoder, _dataLength + _overhead);
}
private static byte[] generateRandomBytes(int length) {
byte[] data = new byte[length];
Random rand = new Random();
rand.nextBytes(data);
return data;
}
}