$30
Software Engineering
Assignment 1
Junit Test
Part I: You are given the following LinkedStack.java file which includes the implementation of Stack using LinkedList data structure.
import java.util.NoSuchElementException;
public class LinkedStack<Item{
private int n; // size of the stack
private Node first; // top of stack
private class Node {
private Item item;
private Node next;
}
//initializes an empty stack.
public LinkedStack() {
first = null;
n = 0;
}
//returns true if this stack is empty; false otherwise
public boolean isEmpty() {
return first == null;
}
//returns the number of items in the stack.
public int size() {
return n;
}
//inserts an item to the stack
public void push(Item item) {
Node temp = first;
first = new Node();
first.item = item;
first.next = temp;
n++;
}
//removes and returns the top element in the stack
public Item pop() {
if (isEmpty()) throw new ArrayIndexOutOfBoundsException("Stack underflow");
Item item = first.item;
first = first.next;
return item;
}
//returns (but does not remove) the item most recently added to this stack.
public Item peek() {
if (isEmpty()) throw new ArrayIndexOutOfBoundsException("Stack underflow");
return first.item;
}
}
You are supposed to use Junit5 to create a test class with test cases, LinkedStackTest.java, to test the operations of LinkedStack.
Here are some other requirements for the activity:
• Create a LinkedStackTest.java and write test cases to test all the operations of LinkedStack.java
• Pushing 10000 objects into a stack should not take longer than 5 miliseconds
• Pop and peek methods should throw NoSuchElementException
if stack is empty
• Provide the list of failing test cases and explain the reason for failure
• Resolve the issues by modifying the original class in a separate class LinkedStackFixed.java file and make sure all tests pass.