@Test public void grow() { CircularQueue<A> alg = new CircularQueue<A>(A.class,3); alg.grow().value = 1; assertEquals(1,alg.size); alg.grow().value = 2; alg.grow().value = 3; alg.grow().value = 4; assertEquals(1,alg.data[0].value); assertEquals(4,alg.data[3].value); assertEquals(4,alg.size); assertTrue(alg.data.length >= 4); // wrap around case alg = new CircularQueue<A>(A.class,3); alg.size = 2; alg.start = 1; alg.grow().value = 1; assertEquals(1,alg.data[0].value); assertTrue(null == alg.data[1]); assertTrue(null == alg.data[2]); }
@Test public void get() { CircularQueue<A> alg = new CircularQueue<A>(A.class,2); assertEquals(2,alg.data.length); // easy case alg.grow().value = 1; alg.grow().value = 2; assertEquals(1,alg.get(0).value); assertEquals(2,alg.get(1).value); // make there be an offset alg.removeHead(); alg.grow().value = 3; assertEquals(2,alg.data.length); // sanity check assertEquals(2,alg.get(0).value); assertEquals(3,alg.get(1).value); }