Site icon TestingDocs.com

Test Driver Sample Java program to test Queue

Problem Statement

Write a Queue Test Driver to test FIFO Queue that holds String elements in Java.Queue works like First In First Out principle. Queue follows the FIFO principle. It is an ordered list of elements with some restrictions of inserting and deleting elements. We can insert elements at the end of list and delete the elements from the start of list.

Queue Interface

public interface QueueInterface
{
 void enqueue(String element) throws QueueOverflowException;
 // Adds element to the rear of this queue.

String dequeue() throws QueueUnderflowException;
 // Removes front element from this queue and returns it.

boolean isFull();
 // Returns true if this queue is full; otherwise, returns false.

boolean isEmpty();
 // Returns true if this queue is empty; otherwise, returns false.

int size();
 // Returns the number of elements in this queue.

int spaceLeft();
 // Returns the number of empty slots in the Queue.

String printQueue();
 // Returns a string that represents current data in the queue.
}

 

StringQueue

public class StringQueue implements QueueInterface
{
 protected final int CAPACITY = 50; 
 protected String[] queueData; 
 protected int dataSize = 0; 
 protected int front = 0; 
 protected int rear;

public StringQueue()
 {
 queueData = new String[CAPACITY];
 rear = CAPACITY - 1;
 }

public StringQueue(int maxSize)
 {
 queueData = new String[maxSize];
 rear = maxSize - 1;
 }



public void enqueue(String element)
 // Adds element to the rear of this queue.
 {
 try{
 if (isFull())
 throw new QueueOverflowException("Enqueue attempted on a full queue.");
 else
 {
 rear = (rear + 1) % queueData.length;
 queueData[rear] = element;
 dataSize = dataSize + 1;
 }
 }catch(QueueOverflowException qe){
 qe.getMessage();
 }
 }

public String dequeue()
 // Removes front element from this queue and returns it.
 {
 String toReturn =null;
 try{
 if (isEmpty())
 throw new QueueUnderflowException("Dequeue attempted on empty queue.");
 else
 {
 toReturn = queueData[front];
 queueData[front] = null;
 front = (front + 1) % queueData.length;
 dataSize = dataSize - 1;
 } 
 }catch(QueueUnderflowException qe){
 qe.getMessage();
 }
 return toReturn;
 }

public boolean isEmpty()
 // Returns true if this queue is empty; otherwise, returns false.
 {
 return (dataSize == 0);
 }

public boolean isFull()
 // Returns true if this queue is full; otherwise, returns false.
 {
 return (dataSize == queueData.length);
 }

public int size()
 // Returns the number of elements in this queue.
 {
 return dataSize;
 }

//Prints the current data in the queue.
 public String printQueue()
 {
 String current_data="";
 for(int i=front;i<=rear;i++)
 {
 current_data= current_data + "|" + queueData[i].toString() + " ";
 }
 return current_data;
 }

//returns the empty slots in the queue
 public int spaceLeft(){
 return queueData.length - dataSize;
 }

}

 

 

QueueTestDriver

 

public class QueueTestDriver
{
 public static void main(String[] args)
 {
 QueueInterface test = new StringQueue();
 Scanner scanner = new Scanner(System.in);

boolean keepTesting; 
 String skip;
 int constructor; 
 int operation;

String enqueueString = "", dequeueString = ""; // used by operations
 
 System.out.println("Choose One or Two");
 System.out.println("1: StringQueue( )");
 System.out.println("2: StringQueue(maxSize)");
 if (scanner.hasNextInt())
 constructor = scanner.nextInt();
 else
 {
 System.out.println("Please enter an integer.Terminating test.");
 scanner.close();
 return;
 }
 skip = scanner.nextLine();

switch (constructor)
 {
 case 1:
 test = new StringQueue();
 break;

case 2:
 System.out.println("Enter a maximum size:");
 int maxSize;
 if (scanner.hasNextInt())
 maxSize = scanner.nextInt();
 else
 {
 System.out.println("Error: you must enter an integer.");
 System.out.println("Terminating test.");
 scanner.close();
 return;
 }
 skip = scanner.nextLine();
 test = new StringQueue(maxSize);
 break;

default:
 System.out.println("Error in constructor choice. Terminating test.");
 scanner.close();
 return;
 }

// Handle test cases
 keepTesting = true;
 while (keepTesting)
 {
 System.out.println("\nChoose an operation:");
 System.out.println("1: enqueue()");
 System.out.println("2: dequeue()");
 System.out.println("3: isFull()");
 System.out.println("4: isEmpty()");
 System.out.println("5: size()");
 System.out.println("6: printQueue()");
 System.out.println("7: spaceLeft()");
 System.out.println("8: Stop");
 if (scanner.hasNextInt())
 operation = scanner.nextInt();
 else
 {
 System.out.println("Error: you must enter an integer.");
 System.out.println("Terminating test.");
 scanner.close();
 return;
 }
 skip = scanner.nextLine();

switch (operation)
 {
 case 1: // enqueue
 System.out.println("Enter string to enqueue:");
 enqueueString = scanner.nextLine();
 System.out.println("enqueue(\"" + enqueueString + "\")");
 try
 {
 test.enqueue(enqueueString);
 }
 catch (QueueOverflowException e)
 {
 System.out.println("Overflow Exception: " + e.getMessage());
 } 
 break;

case 2: // dequeue
 System.out.println("dequeue()");
 try
 {
 dequeueString = test.dequeue();
 }
 catch (QueueUnderflowException e)
 {
 System.out.println("Underflow Exception: " + e.getMessage());
 break;
 } 
 System.out.println("Result: " + dequeueString + " was returned.");
 break;

case 3: // isFull
 System.out.println("isFull()");
 System.out.println("Result: " + test.isFull());
 break;

case 4: // isEmpty
 System.out.println("isEmpty()");
 System.out.println("Result: " + test.isEmpty());
 break;

case 5: // size
 System.out.println("size()");
 System.out.println("Result: " + test.size());
 break;

case 6: //printQueue
 System.out.println("printQueue()");
 System.out.println("Result: " + test.printQueue());
 break;

case 7: // space
 System.out.println("spaceLeft()");
 System.out.println("Result: " + test.spaceLeft());
 break;



case 8: // stop testing
 keepTesting = false;
 break;

default:
 System.out.println("Error. Terminating test.");
 scanner.close();
 return;
 }

}
 scanner.close();
 System.out.println("End of Test Driver");
 }
}

 

Run output of the program:

Sample run of the test driver

Choose One or Two
1: StringQueue( )
2: StringQueue(maxSize)
2
Enter a maximum size:
10

Choose an operation:
1: enqueue()
2: dequeue()
3: isFull()
4: isEmpty()
5: size()
6: printQueue()
7: spaceLeft()
8: Stop
1
Enter string to enqueue:
IronMan
enqueue(“IronMan”)

Choose an operation:
1: enqueue()
2: dequeue()
3: isFull()
4: isEmpty()
5: size()
6: printQueue()
7: spaceLeft()
8: Stop
1
Enter string to enqueue:
Jurassic Park
enqueue(“Jurassic Park”)

Choose an operation:
1: enqueue()
2: dequeue()
3: isFull()
4: isEmpty()
5: size()
6: printQueue()
7: spaceLeft()
8: Stop
1
Enter string to enqueue:
Avatar
enqueue(“Avatar”)

Choose an operation:
1: enqueue()
2: dequeue()
3: isFull()
4: isEmpty()
5: size()
6: printQueue()
7: spaceLeft()
8: Stop
6
printQueue()
Result: |IronMan |Jurassic Park |Avatar

Choose an operation:
1: enqueue()
2: dequeue()
3: isFull()
4: isEmpty()
5: size()
6: printQueue()
7: spaceLeft()
8: Stop
4
isEmpty()
Result: false

Choose an operation:
1: enqueue()
2: dequeue()
3: isFull()
4: isEmpty()
5: size()
6: printQueue()
7: spaceLeft()
8: Stop
3
isFull()
Result: false

Choose an operation:
1: enqueue()
2: dequeue()
3: isFull()
4: isEmpty()
5: size()
6: printQueue()
7: spaceLeft()
8: Stop
7
spaceLeft()
Result: 7

Choose an operation:
1: enqueue()
2: dequeue()
3: isFull()
4: isEmpty()
5: size()
6: printQueue()
7: spaceLeft()
8: Stop
2
dequeue()
Result: IronMan was returned.

Choose an operation:
1: enqueue()
2: dequeue()
3: isFull()
4: isEmpty()
5: size()
6: printQueue()
7: spaceLeft()
8: Stop
6
printQueue()
Result: |Jurassic Park |Avatar

Choose an operation:
1: enqueue()
2: dequeue()
3: isFull()
4: isEmpty()
5: size()
6: printQueue()
7: spaceLeft()
8: Stop
8
End of Test Driver

Exit mobile version