import static org.junit.Assert.*; import org.junit.Test; import java.util.Stack; public class SlowQueueTestReverse { @Test public void testReverseQueue() { SlowQueue q = new SlowQueue(); q.enqueue("a"); q.enqueue("b"); q.enqueue("c"); q.enqueue("d"); assertEquals("a", q.peek()); reverseQueue(q); assertEquals("d", q.peek()); assertEquals("d", q.dequeue()); assertEquals("c", q.dequeue()); assertEquals("b", q.dequeue()); assertEquals("a", q.dequeue()); } private void reverseQueue(SlowQueue qu) { Stack s = new Stack(); while (!qu.isEmpty()) { s.push(qu.dequeue()); } while (!s.isEmpty()) { qu.enqueue(s.pop()); } } @Test public void testAllMethods() { SlowQueue q = new SlowQueue(); assertTrue(q.isEmpty()); q.enqueue("a"); assertFalse(q.isEmpty()); assertEquals("a", q.peek()); q.enqueue("b"); assertFalse(q.isEmpty()); assertEquals("a", q.peek()); q.enqueue("c"); assertEquals("a", q.peek()); q.enqueue("d"); assertEquals("a", q.peek()); assertEquals("a", q.dequeue()); assertFalse(q.isEmpty()); assertEquals("b", q.dequeue()); assertEquals("c", q.dequeue()); assertEquals("d", q.dequeue()); assertTrue(q.isEmpty()); } }