1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.commons.collections4;
18
19 import static org.junit.jupiter.api.Assertions.assertEquals;
20 import static org.junit.jupiter.api.Assertions.assertFalse;
21 import static org.junit.jupiter.api.Assertions.assertThrows;
22 import static org.junit.jupiter.api.Assertions.assertTrue;
23
24 import java.util.EmptyStackException;
25
26 import org.junit.jupiter.api.Test;
27
28
29
30
31 @SuppressWarnings("deprecation")
32 public class ArrayStackTest<E> extends AbstractArrayListTest<E> {
33
34 @Override
35 public String getCompatibilityVersion() {
36 return "4";
37 }
38
39 @Override
40 public ArrayStack<E> makeObject() {
41 return new ArrayStack<>();
42 }
43
44 @Test
45 public void testNewStack() {
46 final ArrayStack<E> stack = makeObject();
47 assertTrue(stack.empty(), "New stack is empty");
48 assertEquals(0, stack.size(), "New stack has size zero");
49
50 assertThrows(EmptyStackException.class, () -> stack.peek());
51
52 assertThrows(EmptyStackException.class, () -> stack.pop());
53 }
54
55 @Test
56 @SuppressWarnings("unchecked")
57 public void testPushPeekPop() {
58 final ArrayStack<E> stack = makeObject();
59
60 stack.push((E) "First Item");
61 assertFalse(stack.empty(), "Stack is not empty");
62 assertEquals(1, stack.size(), "Stack size is one");
63 assertEquals("First Item", stack.peek(),
64 "Top item is 'First Item'");
65 assertEquals(1, stack.size(), "Stack size is one");
66
67 stack.push((E) "Second Item");
68 assertEquals(2, stack.size(), "Stack size is two");
69 assertEquals("Second Item", stack.peek(),
70 "Top item is 'Second Item'");
71 assertEquals(2, stack.size(), "Stack size is two");
72
73 assertEquals("Second Item", stack.pop(),
74 "Popped item is 'Second Item'");
75 assertEquals("First Item", stack.peek(),
76 "Top item is 'First Item'");
77 assertEquals(1, stack.size(), "Stack size is one");
78
79 assertEquals("First Item", stack.pop(),
80 "Popped item is 'First Item'");
81 assertEquals(0, stack.size(), "Stack size is zero");
82 }
83
84 @Test
85 @Override
86 @SuppressWarnings("unchecked")
87 public void testSearch() {
88 final ArrayStack<E> stack = makeObject();
89
90 stack.push((E) "First Item");
91 stack.push((E) "Second Item");
92 assertEquals(1, stack.search("Second Item"),
93 "Top item is 'Second Item'");
94 assertEquals(2, stack.search("First Item"),
95 "Next Item is 'First Item'");
96 assertEquals(-1, stack.search("Missing Item"),
97 "Cannot find 'Missing Item'");
98 }
99
100
101
102
103
104
105
106
107 }