private void doTestSplit(int size) {
for (int i = 1; i <= size; i++) {
final int num = size / i;
final int remainder = size - (num * i);
int j = 1;
try {
for (; j <= size; j++) {
Buffer[] buffers = new Buffer[num];
for (int k = 0; k < buffers.length; k++) {
buffers[k] = mm.allocate(i);
}
if (remainder > 0) {
buffers = Arrays.copyOf(buffers, num + 1);
buffers[num] = mm.allocate(remainder);
}
CompositeBuffer compositeBuffer = createCompositeBuffer(buffers);
for (int k = 0; k < compositeBuffer.remaining(); k++) {
compositeBuffer.put(k, (byte) (k % 127));
}
Buffer slice2 = compositeBuffer.split(j);
assertEquals("Slice1 unexpected length", j, compositeBuffer.remaining());
assertEquals("Slice2 unexpected length", size - j, slice2.remaining());
}
} catch (Exception e) {
throw new IllegalStateException("Exception happened. size=" + size + " chunkSize=" + i + " splitPos=" + j, e);
}
}
}