import java.util.Iterator;
import static org.junit.Assert.*;
import org.junit.Before;
import org.junit.Test;
/**
* A simple test program for a queue
*
* @author Chuck Cusack
* @version 1.0, February 2008
* @modified Feb 2013 (Updated to use JUnit)
*/
public class TestQueue extends Object {
@Test
public void testArrayListqueue() {
QueueInterface<String> queue = new ArrayListQueue<String>();
testThisqueue(queue);
}
@Test
public void testLinkedqueue() {
QueueInterface<String> queue = new LinkedQueue<String>();
testThisqueue(queue);
}
@Test
public void testArrayqueue() {
QueueInterface<String> queue = new ArrayQueue<String>(4);
testThisqueue(queue);
}
public void testThisqueue(QueueInterface<String> queue) {
// It should be empty to start.
assertTrue(queue.isEmpty());
// It should definitely not be full.
assertFalse(queue.isFull());
// Adding one element makes it neither full nor empty.
queue.enqueue("blah");
assertFalse(queue.isEmpty());
assertFalse(queue.isFull());
// Add two more elements
queue.enqueue("foo");
queue.enqueue("ferzle");
// Does the iterator work?
Iterator<String> it = queue.iterator();
String[] elements = { "blah", "foo", "ferzle" };
int i = 0;
while (it.hasNext()) {
String s = it.next();
assertEquals(elements[i], s);
i++;
}
// queue should not be full.
assertFalse(queue.isFull());
//
assertEquals("blah", queue.peek());
assertEquals("blah", queue.dequeue());
assertEquals("foo", queue.dequeue());
assertEquals("ferzle", queue.dequeue());
assertTrue(queue.isEmpty());
}
}