Because I like to write my own data types,
import static org.junit.Assert.assertEquals; import org.junit.Test; public class Ring { private String[] data; int n = 0; public Ring(int size) { data = new String[size]; } public void push(String s) { data[n] = s; n = (n + 1) % data.length; } public void shift(String s) { data[n = (n - 1) % data.length] = s; } public String get(int index) { return data[(n + index) % data.length]; } public static class Examples { @Test public void shouldDropElementsWhenPushingTooFar() { Ring ring = new Ring(3); ring.push("A"); ring.push("B"); ring.push("C"); ring.push("D"); ring.push("E"); assertEquals("C", ring.get(0)); assertEquals("D", ring.get(1)); assertEquals("E", ring.get(2)); } @Test public void shouldAddElementsAtTheFront() { Ring ring = new Ring(3); ring.push("A"); ring.push("B"); ring.push("C"); ring.push("D"); ring.push("E");
akuhn source share