StackTest.java revision 2ad60cfc28e14ee8f0bb038720836a4696c478ad
1/*
2 *  Licensed to the Apache Software Foundation (ASF) under one or more
3 *  contributor license agreements.  See the NOTICE file distributed with
4 *  this work for additional information regarding copyright ownership.
5 *  The ASF licenses this file to You under the Apache License, Version 2.0
6 *  (the "License"); you may not use this file except in compliance with
7 *  the License.  You may obtain a copy of the License at
8 *
9 *     http://www.apache.org/licenses/LICENSE-2.0
10 *
11 *  Unless required by applicable law or agreed to in writing, software
12 *  distributed under the License is distributed on an "AS IS" BASIS,
13 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 *  See the License for the specific language governing permissions and
15 *  limitations under the License.
16 */
17
18package tests.api.java.util;
19
20import java.util.EmptyStackException;
21import java.util.Stack;
22
23public class StackTest extends junit.framework.TestCase {
24
25    Stack s;
26
27    /**
28     * @tests java.util.Stack#Stack()
29     */
30    public void test_Constructor() {
31        // Test for method java.util.Stack()
32        assertEquals("Stack creation failed", 0, s.size());
33    }
34
35    /**
36     * @tests java.util.Stack#empty()
37     */
38    public void test_empty() {
39        // Test for method boolean java.util.Stack.empty()
40        assertTrue("New stack answers non-empty", s.empty());
41        s.push("blah");
42        assertTrue("Stack should not be empty but answers empty", !s.empty());
43        s.pop();
44        assertTrue("Stack should be empty but answers non-empty", s.empty());
45        s.push(null);
46        assertTrue("Stack with null should not be empty but answers empty", !s
47                .empty());
48    }
49
50    /**
51     * @tests java.util.Stack#peek()
52     */
53    public void test_peek() {
54        // Test for method java.lang.Object java.util.Stack.peek()
55        String item1 = "Ichi";
56        String item2 = "Ni";
57        String item3 = "San";
58        s.push(item1);
59        assertTrue("Peek did not return top item when it was the only item", s
60                .peek() == item1);
61        s.push(item2);
62        s.push(item3);
63        assertTrue("Peek did not return top item amoung many other items", s
64                .peek() == item3);
65        s.pop();
66        assertTrue("Peek did not return top item after a pop", s.pop() == item2);
67        s.push(null);
68        assertNull("Peek did not return top item (wanted: null)",
69                s.peek());
70    }
71
72    /**
73     * @tests java.util.Stack#pop()
74     */
75    public void test_pop() {
76        // Test for method java.lang.Object java.util.Stack.pop()
77        String item1 = "Ichi";
78        String item2 = "Ni";
79        Object lastPopped;
80        s.push(item1);
81        s.push(item2);
82
83        try {
84            lastPopped = s.pop();
85            assertTrue("a) Pop did not return top item", lastPopped == item2);
86        } catch (EmptyStackException e) {
87            fail(
88                    "a) Pop threw EmptyStackException when stack should not have been empty");
89        }
90
91        try {
92            lastPopped = s.pop();
93            assertTrue("b) Pop did not return top item", lastPopped == item1);
94        } catch (EmptyStackException e) {
95            fail(
96                    "b) Pop threw EmptyStackException when stack should not have been empty");
97        }
98
99        s.push(null);
100        try {
101            lastPopped = s.pop();
102            assertNull("c) Pop did not return top item", lastPopped);
103        } catch (EmptyStackException e) {
104            fail(
105                    "c) Pop threw EmptyStackException when stack should not have been empty");
106        }
107
108        try {
109            lastPopped = s.pop();
110            fail(
111                    "d) Pop did not throw EmptyStackException when stack should have been empty");
112        } catch (EmptyStackException e) {
113            return;
114        }
115
116    }
117
118    /**
119     * @tests java.util.Stack#push(java.lang.Object)
120     */
121    public void test_pushLjava_lang_Object() {
122        // Test for method java.lang.Object
123        // java.util.Stack.push(java.lang.Object)
124        assertTrue("Used to test", true);
125    }
126
127    /**
128     * @tests java.util.Stack#search(java.lang.Object)
129     */
130    public void test_searchLjava_lang_Object() {
131        // Test for method int java.util.Stack.search(java.lang.Object)
132        String item1 = "Ichi";
133        String item2 = "Ni";
134        String item3 = "San";
135        s.push(item1);
136        s.push(item2);
137        s.push(item3);
138        assertEquals("Search returned incorrect value for equivalent object", 3, s
139                .search(item1));
140        assertEquals("Search returned incorrect value for equal object", 3, s
141                .search("Ichi"));
142        s.pop();
143        assertEquals("Search returned incorrect value for equivalent object at top of stack",
144                1, s.search(item2));
145        assertEquals("Search returned incorrect value for equal object at top of stack",
146                1, s.search("Ni"));
147        s.push(null);
148        assertEquals("Search returned incorrect value for search for null at top of stack",
149                1, s.search(null));
150        s.push("Shi");
151        assertEquals("Search returned incorrect value for search for null", 2, s
152                .search(null));
153        s.pop();
154        s.pop();
155        assertEquals("Search returned incorrect value for search for null--wanted -1",
156                -1, s.search(null));
157    }
158
159    /**
160     * Sets up the fixture, for example, open a network connection. This method
161     * is called before a test is executed.
162     */
163    protected void setUp() {
164        s = new Stack();
165    }
166
167    /**
168     * Tears down the fixture, for example, close a network connection. This
169     * method is called after a test is executed.
170     */
171    protected void tearDown() {
172    }
173}
174