import junit.framework.*;

/**
 * JUnit test class for the QueueADT
 */
public class QueueTest extends TestCase 
{	
	public QueueTest( String str )
	{
		super( str );
	}	
	
	//*********************  Test methods ************************
	
	public void testConstructor1()
	{
		assertNotNull(new LinkedQueue());
	}
	
	public void testConstructor2()
	{
		assertNotNull(new LinkedQueue(1000));
	}
	
	public void testQueueInterface()
	{
		QueueADT q = new LinkedQueue();
		q.push("Hello");
		q.push("there");
		assertEquals( (String)(q.pop()),"Hello" );
		assertEquals( (String)(q.pop()),"there" );
	}
	
	public void testPushes()
	{
		LinkedQueue q = new LinkedQueue(50);
		for( int i = 0; i < 900; ++i )
			q.push( new Integer(i) );
		Integer num = new Integer(1000);
		q.push( num );
		for( int i = 0; i < 900; ++i )
			assertNotNull( q.pop() );
		assertSame( num, (Integer)(q.pop()) );
	}
	
	public void testFront()
	{
		LinkedQueue q = new LinkedQueue();
		q.push( "hello" );
		q.push( "there" );
		assertEquals( "hello", (String)(q.front()) );
	}
	
	public void testPop()
	{
	    LinkedQueue q = new LinkedQueue();
	    q.push( "wazzup");
	    assertEquals( "wazzup", (String)(q.pop()) );
	}
}
