package au.gov.amsa.util; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import java.util.Iterator; import org.junit.Test; public class RingBufferTest { @Test public void testEmpty() { RingBuffer<Integer> q = RingBuffer.create(3); assertTrue(q.isEmpty()); assertEquals(0, q.size()); } @Test public void testPush() { RingBuffer<Integer> q = RingBuffer.create(3); q.add(1); assertFalse(q.isEmpty()); assertEquals(1, q.size()); assertEquals(1, (int) q.poll()); assertTrue(q.isEmpty()); } @Test public void testPushTwo() { RingBuffer<Integer> q = RingBuffer.create(3); q.add(1); q.add(2); assertFalse(q.isEmpty()); assertEquals(2, q.size()); assertEquals(1, (int) q.poll()); assertEquals(2, (int) q.poll()); assertTrue(q.isEmpty()); q.add(3); q.add(4); assertEquals(3, (int) q.poll()); assertEquals(4, (int) q.poll()); } @Test(expected = RuntimeException.class) public void testPushThreeOverflows() { RingBuffer<Integer> q = RingBuffer.create(2); q.add(1); q.add(2); q.add(3); assertFalse(q.isEmpty()); assertEquals(3, q.size()); assertEquals(1, (int) q.poll()); assertEquals(2, (int) q.poll()); assertEquals(3, (int) q.poll()); } public void testPushThreeInSizeThree() { RingBuffer<Integer> q = RingBuffer.create(3); q.add(1); q.add(2); q.add(3); assertFalse(q.isEmpty()); assertEquals(3, q.size()); assertEquals(1, (int) q.poll()); assertEquals(2, (int) q.poll()); assertEquals(3, (int) q.poll()); } public void testPushThreeAndEnumerate() { RingBuffer<Integer> q = RingBuffer.create(3); q.add(1); q.add(2); q.add(3); Iterator<Integer> en = q.iterator(); assertEquals(1, (int) en.next()); assertEquals(1, (int) q.poll()); assertEquals(2, (int) en.next()); assertEquals(2, (int) q.poll()); assertEquals(3, (int) en.next()); assertEquals(3, (int) q.poll()); assertFalse(en.hasNext()); } }