package org.jscsi.target.util;
import org.testng.annotations.Test;
import static org.testng.Assert.assertEquals;
public class FastByteArrayProviderTest {
private static final int CAPACITY = 4;
private static final FastByteArrayProvider PROVIDER = new FastByteArrayProvider(CAPACITY);
@Test
public void testFastByteArrayProvider() {
int capacity = 13;
FastByteArrayProvider p = new FastByteArrayProvider(capacity);
assert (p.getAll().length == capacity);
}
@Test
public void testGetArray() {
// fill all four slots ...
PROVIDER.getArray(1);
PROVIDER.getArray(2);
PROVIDER.getArray(3);
PROVIDER.getArray(4);
// ... and test
final byte[][] arrays = PROVIDER.getAll();
for (int i = 0; i < CAPACITY; ++i)
assertEquals(arrays[i].length, i + 1);// [1][2][3][4]
// move last element to the front (3 swaps) ...
for (int i = 0; i < 3; ++i)
PROVIDER.getArray(4);
// ... and test
assert (arrays[0].length == 4);// [4][1][2][3]
for (int i = 1; i < CAPACITY; ++i)
assertEquals(arrays[i].length, i);
// replace last element
PROVIDER.getArray(5);// [4][1][2][5]
assertEquals(4, arrays[0].length);
assertEquals(1, arrays[1].length);
assertEquals(2, arrays[2].length);
assertEquals(5, arrays[3].length);
}
@Test
public void testGetAll() {
assertEquals(CAPACITY, PROVIDER.getAll().length);
}
}