package com.badlogic.demos.automation;
import junit.framework.TestCase;
import org.junit.Test;
public class RingBufferTest extends TestCase {
@Test
public void testIterator() {
testIterator(7, 7, 7);
testIterator(5, 7, 7);
testIterator(7, 5, 5);
testIterator(5, 7, 5);
testIterator(5, 7, 3);
testIterator(7, 12, 367);
}
private void testIterator(int capacity, int objects, int fill) {
RingBuffer<Integer> r = new RingBuffer<Integer>(capacity);
Integer[] os = new Integer[objects];
// initialize integers
for (int i = 0; i < objects; i++) {
Integer o = new Integer(i);
os[i] = o;
}
for (int i = 0; i < fill; i++) {
r.push(os[i % objects]);
}
int lastIn = fill % objects;
int firstIn;
if (fill < capacity) {
firstIn = (lastIn - fill + objects) % objects;
} else {
firstIn = (lastIn - capacity + objects) % objects;
}
int i = firstIn;
for (Object o : r) {
assertSame("Access " + (i - firstIn) + ":", os[i % objects], o);
i++;
}
assertEquals(capacity > fill ? fill : capacity, i - firstIn);
}
public void testGet() {
RingBuffer<Object> r = new RingBuffer<Object>(5);
Object[] os = new Object[7];
for (int i = 0; i < 7; i++) {
Object o = new Object();
r.push(o);
os[i] = o;
}
assertSame(os[2], r.get(0));
}
}