Java programming: JUnit test
Create a simple stack class based on the provided stack interface implemented using an array.
* Hint you need a constructor that creates the array something like this: * stackItems = (Item[]) new Object[maxSize];
Add methods should look like ( in the Stack class): add unimplemented methods
Using the interface create a simple stack class -> Use an array as the underlying data structure. -> Try to pass all the included unit tests (hint : import java.util.EmptyStackException
-> Add the missing test (Test Coverage). Add methods should look like ( in the Stack class): add unimplemented methods
public class Stack
- implements StackInterface
- { @Override public void push(Item item) { // TODO Auto-generated method stub @Override public void pop() { // TODO Auto-generated method stub @Override public Item top() { // TODO Auto-generated method stub return null; @Override public Item topAndPop() { // TODO Auto-generated method stub return null; Stackinterface - Notepad File Edit Format View Help //No need to update this file public interface StackInterface
- { * Insert a new item into the stack. * @param item the item to insert. public void push(Item item); * Remove the most recently inserted item from the stack. public void pop(); * Get the most recently inserted item in the stack. Does not alter the stack. public Item top(); * Return and remove the most recently inserted item from the stack. * @return the most recently inserted item in the stack. Item topAndPop(); * Test if the stack is logically empty. * @return true if empty, false otherwise. public boolean isEmpty(); *Make the stack logically empty. public void makeEmpty(); *Return the size of the stack. public int size(); TestStack - Notepad File Edit Format View Help import static org. junit. Assert. assertEquals; import static org. junit. Assert.assert False: import static org. junit.Assert.assertTrue; import static org. junit.jupiter.api. Assertions.assert Throws; import java.util. EmptyStackexception; import org. junit. jupiter.api. Test; //No need to update this file class TestStack { @Test public void testSizeStackEmpty() { Stack Integer> stack = new Stack(); assertEquals(e, stack.size()); @Test public void testisEmptyStackEmpty() { Stack stack = new Stack(); assert True(stack.isEmpty(); @Test public void testTopEmptyStack() throws EmptyStackException { Stack Integer> stack = new Stack(); assert Throws (EmptyStackException.class, ()->stack.top(), "Exception not throw as expected"); Test public void testPopEmptyStack() throws EmptyStackException { Stack Integer> stack = new Stack(); assertThrows (EmptyStackException.class, ()->stack.pop(), "Exception not throw as expected"); @Test public void test TopAndPopEmptyStack() throws EmptyStackException Stack Integer> stack - new Stack Integer>(); assertThrows (EmptyStackexception.class, ()->stack.topAndPop(), "Exception not throw as expected"); @Test public void testisEmptyAfterOnePush() { Stack Integer> stack = new Stack(); stack.push(5); assertFalse(stack.isEmpty(); @Test public void testSizeAfterOnePush() { Stack Integer> stack - new Stack(); stack.push(5); assertEquals(1, stack.size()); @Test public void test TopAfterOnePush() { Stack Integer> stack = new Stack(); stack.push(5); Integer expected = 5; assertEquals(expected, stack.top(); @Test public void testTopAfterPushPop() throws EmptyStackException { Stack Integer> stack - new Stack(); stack.push(5); stack.pop(); assertThrows (EmptyStackException.class, () ->stack.top(), "Exception not throw as expected"); Test public void test TopAfterPushPushPop() { Stack stack = new Stack(); stack.push(9); stack.push(7); stack.pop(); Integer expected - 9; assertEquals(expected, stack.top(); Test public void testSizeAfterMultiplePush() { Stack stack - new Stack(); stack.push(5); stack.push(4); stack.push(); stack.push(3); assertEquals(4, stack.size()); Test public void testSizeAfterPushPop() { Stack stack = new Stack(); stack.push(5); stack.pop(); assertEquals(e, stack.size()); @Test public void testisEmptyAfterMultiplePush() { Stack stack - new Stack Integer>(); stack.push(5); stack.push(4); stack.push(8); stack.push(3); assert False(stack.isEmpty(); public class Stack
- implements StackInterface
- { @Override public void push(Item item) { // TODO Auto-generated method stub @Override public void pop() { // TODO Auto-generated method stub @Override public Item top() { // TODO Auto-generated method stub return null; @Override public Item topAndPop() { // TODO Auto-generated method stub return null; Stackinterface - Notepad File Edit Format View Help //No need to update this file public interface StackInterface
- { * Insert a new item into the stack. * @param item the item to insert. public void push(Item item); * Remove the most recently inserted item from the stack. public void pop(); * Get the most recently inserted item in the stack. Does not alter the stack. public Item top(); * Return and remove the most recently inserted item from the stack. * @return the most recently inserted item in the stack. Item topAndPop(); * Test if the stack is logically empty. * @return true if empty, false otherwise. public boolean isEmpty(); *Make the stack logically empty. public void makeEmpty(); *Return the size of the stack. public int size(); TestStack - Notepad File Edit Format View Help import static org. junit. Assert. assertEquals; import static org. junit. Assert.assert False: import static org. junit.Assert.assertTrue; import static org. junit.jupiter.api. Assertions.assert Throws; import java.util. EmptyStackexception; import org. junit. jupiter.api. Test; //No need to update this file class TestStack { @Test public void testSizeStackEmpty() { Stack Integer> stack = new Stack(); assertEquals(e, stack.size()); @Test public void testisEmptyStackEmpty() { Stack stack = new Stack(); assert True(stack.isEmpty(); @Test public void testTopEmptyStack() throws EmptyStackException { Stack Integer> stack = new Stack(); assert Throws (EmptyStackException.class, ()->stack.top(), "Exception not throw as expected"); Test public void testPopEmptyStack() throws EmptyStackException { Stack Integer> stack = new Stack(); assertThrows (EmptyStackException.class, ()->stack.pop(), "Exception not throw as expected"); @Test public void test TopAndPopEmptyStack() throws EmptyStackException Stack Integer> stack - new Stack Integer>(); assertThrows (EmptyStackexception.class, ()->stack.topAndPop(), "Exception not throw as expected"); @Test public void testisEmptyAfterOnePush() { Stack Integer> stack = new Stack(); stack.push(5); assertFalse(stack.isEmpty(); @Test public void testSizeAfterOnePush() { Stack Integer> stack - new Stack(); stack.push(5); assertEquals(1, stack.size()); @Test public void test TopAfterOnePush() { Stack Integer> stack = new Stack(); stack.push(5); Integer expected = 5; assertEquals(expected, stack.top(); @Test public void testTopAfterPushPop() throws EmptyStackException { Stack Integer> stack - new Stack(); stack.push(5); stack.pop(); assertThrows (EmptyStackException.class, () ->stack.top(), "Exception not throw as expected"); Test public void test TopAfterPushPushPop() { Stack stack = new Stack(); stack.push(9); stack.push(7); stack.pop(); Integer expected - 9; assertEquals(expected, stack.top(); Test public void testSizeAfterMultiplePush() { Stack stack - new Stack(); stack.push(5); stack.push(4); stack.push(); stack.push(3); assertEquals(4, stack.size()); Test public void testSizeAfterPushPop() { Stack stack = new Stack(); stack.push(5); stack.pop(); assertEquals(e, stack.size()); @Test public void testisEmptyAfterMultiplePush() { Stack stack - new Stack Integer>(); stack.push(5); stack.push(4); stack.push(8); stack.push(3); assert False(stack.isEmpty()