+1 (315) 557-6473 

Create A Program to Implement Stack ADT In Java Assignment Solution.


Instructions

Objective
Write a program to implement stack ADT in java language.

Requirements and Specifications

Program to implement stack ADT in java

Screenshot

Program to implement stack ADT in java 1
Program to implement stack ADT in java 2

Source Code

TEST ENGINE

import java.io.StringReader;

import edu.uwm.cs.junit.LockedTestCase;

import edu.uwm.cs351.ps.Array;

import edu.uwm.cs351.ps.Engine;

import edu.uwm.cs351.ps.Interpreter;

import edu.uwm.cs351.ps.Scanner;

public class TestEngine extends LockedTestCase {

    Engine engine;

    protected void setUp() {

        engine = new Engine(10,10);

    }

    protected void execute(String s) {

        Interpreter i = new Interpreter(new Scanner(new StringReader(s)), engine);

        i.run();

    }

    public void test00() {

        engine.push("a");

        engine.push("b");

        engine.push("c");

        // debug string prints the stack:

        assertEquals(Ts(1246496985),engine.debugString());

        execute("pop");

        assertEquals("[a, b]",engine.debugString());

        execute("(d)"); // Recall that parens are PostScript's way to show string literals

        assertEquals(Ts(1069313328),engine.debugString());

    }

    public void test01() {

        engine.push("a");

        engine.push("b");

        engine.push("c");

        execute("0 index");

        assertEquals("[a, b, c, c]",engine.debugString());

    }

    public void test02() {

        engine.push("a");

        engine.push("b");

        engine.push("c");

        execute("1 index");

        assertEquals(Ts(1810631773), engine.debugString());

    }

    public void test03() {

        engine.push("a");

        engine.push("b");

        engine.push("c");

        execute("2 index");

        assertEquals("[a, b, c, a]", engine.debugString());

    }

    public void test09() {

        execute("(7) (6) (5) (4) (3) (2) (1) 3 index");

        assertEquals("[7, 6, 5, 4, 3, 2, 1, 4]", engine.debugString());

    }

    public void test10() {

        execute("count");

        Double d = (Double)engine.pop();

        assertEquals(Ti(839574740),d.intValue());

    }

    public void test11() {

        engine.push("a");

        execute("count");

        Double d = (Double)engine.pop();

        assertEquals(1,d.intValue());

    }

    public void test13() {

        engine.push("a");

        engine.push("b");

        engine.push("c");

        execute("count");

        Double d = (Double)engine.pop();

        assertEquals(3,d.intValue());

    }

    public void test20() {

        execute("[ counttomark");

        assertEquals("[<mark>, 0.0]",engine.debugString());

        Double d = (Double)engine.pop();

        assertEquals(0,d.intValue());

    }

    public void test21() {

        execute("[ (a) (b) [ (c) counttomark");

        Double d = (Double)engine.pop();

        assertEquals(1,d.intValue());

        assertEquals("[<mark>, a, b, <mark>, c]",engine.debugString());

    }

    public void test22() {

        execute("[ (a) [ (b) (c) counttomark");

        Double d = (Double)engine.pop();

        assertEquals(Ti(1368049932),d.intValue());

        assertEquals("[<mark>, a, <mark>, b, c]",engine.debugString());

    }

    public void test26() {

        execute("[ (a) [ (b) (c) (d) (e) (f) (g) (h) counttomark");

        Double d = (Double)engine.pop();

        assertEquals(7,d.intValue());

        assertEquals("[<mark>, a, <mark>, b, c, d, e, f, g, h]",engine.debugString());

    }

    public void test27() {

        execute("[ (0, 1) [ (a) (b, c) ([) (d, e) counttomark");

        Double d = (Double)engine.pop();

        assertEquals(4, d.intValue());

        assertEquals("[<mark>, 0, 1, <mark>, a, b, c, [, d, e]", engine.debugString());

    }

    public void test30() {

        execute("(a) [ cleartomark");

        assertEquals("[a]",engine.debugString());

    }

    public void test36() {

        execute("[ (z) [ 1 2 3 4 5 (c) cleartomark");

        assertEquals("[<mark>, z]",engine.debugString());

    }

    public void test40() {

        execute("[]");

        Array a = (Array)engine.pop();

        assertEquals(0,a.length());

        assertEquals("[]",engine.debugString()); // coincidence

    }

    public void test41() {

        execute("(hello) [ ]");

        Array a = (Array)engine.pop();

        assertEquals(0,a.length());

        assertEquals("[hello]",engine.debugString());

    }

    public void test42() {

        execute("[ (one) [ (two) ]");

        Array a = (Array)engine.pop();

        assertEquals(1, a.length());

        assertEquals("two", a.get(0));

        assertEquals("[<mark>, one]",engine.debugString());

    }

    public void test44() {

        execute("(a) [ 1 2 3 4 ]");

        Array a = (Array)engine.pop();

        assertEquals(4,a.length());

        assertEquals(Double.valueOf(1),a.get(0));

        assertEquals(Double.valueOf(2),a.get(1));

        assertEquals(Double.valueOf(3),a.get(2));

        assertEquals(Double.valueOf(4),a.get(3));

        assertEquals("[a]",engine.debugString());

    }

    public void test49() {

        execute("[ 9 [ (b) [ (c) (d) ] 10 20 30]");

        Array a = (Array)engine.pop();

        assertEquals(5,a.length());

        assertEquals("b",a.get(0));

        Array a2 = (Array)a.get(1);

        assertEquals(2, a2.length());

        assertEquals("c",a2.get(0));

        assertEquals("d",a2.get(1));

        assertEquals(Double.valueOf(10),a.get(2));

        assertEquals(Double.valueOf(20),a.get(3));

        assertEquals(Double.valueOf(30),a.get(4));

        assertEquals("[<mark>, 9.0]",engine.debugString());

    }

    public void test50() {

        execute("(a) (b) (c) (d) 2 0 roll");

        assertEquals(Ts(1670987571),engine.debugString());

    }

    public void test51() {

        execute("(a) (b) (c) (d) 2 1 roll");

        assertEquals("[a, b, d, c]",engine.debugString());

    }

    public void test52() {

        execute("(a) (b) (c) (d) 2 -1 roll");

        assertEquals("[a, b, d, c]",engine.debugString());

    }

    public void test53() {

        execute("(a) (b) (c) (d) 3 1 roll");

        assertEquals(Ts(763956264),engine.debugString());

    }

    public void test54() {

        execute("(a) (b) (c) (d) 3 2 roll");

        assertEquals("[a, c, d, b]",engine.debugString());

    }

    public void test55() {

        execute("(a) (b) (c) (d) 3 -1 roll");

        assertEquals("[a, c, d, b]",engine.debugString());

    }

    public void test56() {

        execute("(a) (b) (c) (d) 4 1 roll");

        assertEquals("[d, a, b, c]",engine.debugString());

    }

    public void test57() {

        execute("(a) (b) (c) (d) 4 -2 roll");

        assertEquals("[c, d, a, b]",engine.debugString());

    }

    public void test58() {

        execute("(a) (b) (c) (d) 4 -1 roll");

        assertEquals("[b, c, d, a]",engine.debugString());

    }

    public void test59() {

        execute("(1) (2) (3) (4) (5) (6) (7) (8) (9) 7 -5 roll");

        assertEquals("[1, 2, 8, 9, 3, 4, 5, 6, 7]",engine.debugString());

    }

}

TEST STACK

import edu.uwm.cs.junit.LockedTestCase;

import edu.uwm.cs351.util.Stack;

public class TestStack extends LockedTestCase {

    protected void assertException(Class<? extends Throwable> c, Runnable r) {

        try {

            r.run();

            assertFalse("Exception should have been thrown",true);

        } catch (RuntimeException ex) {

            assertTrue("should throw exception of " + c + ", not of " + ex.getClass(), c.isInstance(ex));

        }

    }

    private Stack<Integer> s;

    @Override

    protected void setUp() {

        try {

            assert s.isEmpty();

            assertFalse("Please turn on assertions!",true);

        } catch (NullPointerException ex) {

            assertTrue(true);

        }

        s = new Stack<Integer>();

    }

    public void testS00() {

        Stack<String> s = new Stack<String>();

        assertTrue(s.isEmpty());

    }

    public void testS01() {

        assertTrue(s.isEmpty());

    }

    public void testS10() {

        s.push(77);

        assertEquals(Tb(1948889376), s.isEmpty());

        assertEquals(Ti(717212931), s.peek().intValue());

        assertEquals(Tb(1575342336), s.isEmpty());

        assertEquals(Ti(1634853426), s.pop().intValue());

        assertEquals(Tb(176940846), s.isEmpty());

    }

    public void testS12() {

        s.push(42);

        s.push(-9);

        assertEquals(Ti(1627457663),s.peek().intValue());

        assertFalse(s.isEmpty());

        assertEquals(Ti(1230102286),s.pop().intValue());

        assertFalse(s.isEmpty());

        assertEquals(Ti(2006237031),s.peek().intValue());

        assertEquals(42,s.pop().intValue());

        assertTrue(s.isEmpty());

    }

    public void testS13() {

        s.push(0);

        s.push(-32768);

        s.push(88);

        assertEquals(Ti(1667245384),s.peek().intValue());

        assertFalse(s.isEmpty());

        assertEquals(88,s.pop().intValue());

        assertFalse(s.isEmpty());

        assertEquals(-32768,s.peek().intValue());

        assertEquals(Ti(1859343223),s.pop().intValue());

        assertEquals(Ti(2050818480),s.pop().intValue());

        assertTrue(s.isEmpty());

    }

    public void testS19() {

        s.push(null);

        assertFalse(s.isEmpty());

        assertNull(s.peek());

        assertNull(s.pop());

        assertTrue(s.isEmpty());

    }

    public void testS20() {

        try {

            s.pop();

            assertFalse("pop of an empty stack returned",true);

        } catch (Exception e) {

            //what exception should be thrown?

            assertEquals(Ts(570783829), e.getClass().getSimpleName());

        }

    }

    public void testS21() {

        try {

            s.peek();

            assertFalse("peek on an empty stack returned",true);

        } catch (Exception e) {

            //what exception should be thrown?

            assertEquals(Ts(1903488762), e.getClass().getSimpleName());

        }

    }

    public void testS30() {

        assertTrue(s.clone().isEmpty());

    }

    public void testS31() {

        s.push(1001);

        Stack<Integer> c = s.clone();

        assertEquals(1001,c.pop().intValue());

        assertEquals(1001,s.peek().intValue());

    }

    public void testS32() {

        s.push(169);

        Stack<Integer> c = s.clone();

        s.push(343);

        c.push(-55);

        assertEquals(Ti(1620679750),c.peek().intValue());

        assertEquals(Ti(324933978),s.pop().intValue());

        assertEquals(-55,c.pop().intValue());

        assertEquals(Ti(1020844101),s.pop().intValue());

        assertEquals(Ti(695736991),c.pop().intValue());

    }

    public void testS33() {

        class Hidden extends Stack<String> {

            public boolean isEmpty() {

                return true;

            }

        }

        Hidden h = new Hidden();

        Stack<String> st = h.clone();

        assertTrue("clone didn't use super.clone()",st instanceof Hidden);

    }

    public void testS34() {

        Stack<String> s1 = new Stack<String>();

        Stack<String> s2 = s1.clone();

        s1.push("hello");

        s2.push("bye");

        assertEquals(Ts(2131980359),s1.pop());

        assertEquals(Ts(1875506833),s2.pop());

    }

    public void testS39() {

        for (int i=0; i < 1000; ++i) {

            s.push(i);

        }

        Stack<Integer> c = s.clone();

        for (int i=1; i < 500; ++i) {

            assertEquals(1000,i+c.pop());

            assertEquals(1000,i+s.pop());

        }

        s.push(-17);

        c.push(33);

        assertEquals(-17,s.pop().intValue());

        assertEquals(33,c.pop().intValue());

    }

    public void testS40() {

        for (int i=0; i < 1000; ++i) {

            s.push(i);

            assertFalse(s.isEmpty());

        }

        for (int i=0; i < 1000; ++i) {

            if ((i & 1) == 0) {

                assertEquals(999,i+s.peek());

            }

            assertEquals(999,i+s.pop());

        }

    }

    public void testS42() {

        for (int i=0; i < 1000; ++i) {

            s.push(i);

        }

        s.clear();

        assertTrue(s.isEmpty());

        s.clear();

        assertTrue(s.isEmpty());

    }

    public void testS50() {

        // elements separated by ", " in square brackets

        assertEquals(Ts(1790144628),s.toString());

    }

    public void testS51() {

        // elements separated by ", " in square brackets

        s.push(-4);

        assertEquals(Ts(789077849),s.toString());

    }

    public void testS52() {

        // elements separated by ", " in square brackets

        s.push(13);

        s.push(20);

        assertEquals(Ts(328978396),s.toString());

    }

    public void testS53() {

        s.push(null);

        s.push(-1492);

        s.push(null);

        assertEquals("[null, -1492, null]",s.toString());

    }

}