Skip to content

Commit 054002a

Browse files
testing: added unit tests for the MinStackUsingTwoStacks (TheAlgorithms#6387)
* testing: added unit tests for the MinStackUsingTwoStacks * checkstyle: fix import order --------- Co-authored-by: Deniz Altunkapan <93663085+DenizAltunkapan@users.noreply.github.com>
1 parent a796f6d commit 054002a

File tree

1 file changed

+81
-7
lines changed

1 file changed

+81
-7
lines changed
Lines changed: 81 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,38 +1,112 @@
11
package com.thealgorithms.stacks;
22

33
import static org.junit.jupiter.api.Assertions.assertEquals;
4+
import static org.junit.jupiter.api.Assertions.assertThrows;
45

6+
import java.util.EmptyStackException;
57
import org.junit.jupiter.api.Test;
68

79
public class MinStackUsingTwoStacksTest {
810

911
@Test
10-
public void testMinStackOperations() {
12+
public void testBasicOperations() {
1113
MinStackUsingTwoStacks minStack = new MinStackUsingTwoStacks();
1214
minStack.push(3);
1315
minStack.push(5);
14-
assertEquals(3, minStack.getMin());
16+
assertEquals(3, minStack.getMin(), "Min should be 3");
1517

1618
minStack.push(2);
1719
minStack.push(1);
18-
assertEquals(1, minStack.getMin());
20+
assertEquals(1, minStack.getMin(), "Min should be 1");
1921

2022
minStack.pop();
21-
assertEquals(2, minStack.getMin());
23+
assertEquals(2, minStack.getMin(), "Min should be 2 after popping 1");
24+
25+
assertEquals(2, minStack.top(), "Top should be 2");
26+
}
27+
28+
@Test
29+
public void testPushDuplicateMins() {
30+
MinStackUsingTwoStacks minStack = new MinStackUsingTwoStacks();
31+
minStack.push(2);
32+
minStack.push(2);
33+
minStack.push(1);
34+
minStack.push(1);
35+
assertEquals(1, minStack.getMin(), "Min should be 1");
36+
37+
minStack.pop();
38+
assertEquals(1, minStack.getMin(), "Min should still be 1 after popping one 1");
39+
40+
minStack.pop();
41+
assertEquals(2, minStack.getMin(), "Min should be 2 after popping both 1s");
42+
43+
minStack.pop();
44+
assertEquals(2, minStack.getMin(), "Min should still be 2 after popping one 2");
45+
46+
minStack.pop();
47+
// Now stack is empty, expect exception on getMin
48+
assertThrows(EmptyStackException.class, minStack::getMin);
2249
}
2350

2451
@Test
25-
public void testMinStackOperations2() {
52+
public void testPopOnEmptyStack() {
2653
MinStackUsingTwoStacks minStack = new MinStackUsingTwoStacks();
54+
assertThrows(EmptyStackException.class, minStack::pop);
55+
}
56+
57+
@Test
58+
public void testTopOnEmptyStack() {
59+
MinStackUsingTwoStacks minStack = new MinStackUsingTwoStacks();
60+
assertThrows(EmptyStackException.class, minStack::top);
61+
}
62+
63+
@Test
64+
public void testGetMinOnEmptyStack() {
65+
MinStackUsingTwoStacks minStack = new MinStackUsingTwoStacks();
66+
assertThrows(EmptyStackException.class, minStack::getMin);
67+
}
68+
69+
@Test
70+
public void testSingleElementStack() {
71+
MinStackUsingTwoStacks minStack = new MinStackUsingTwoStacks();
72+
minStack.push(10);
73+
assertEquals(10, minStack.getMin());
74+
assertEquals(10, minStack.top());
75+
76+
minStack.pop();
77+
assertThrows(EmptyStackException.class, minStack::getMin);
78+
}
79+
80+
@Test
81+
public void testIncreasingSequence() {
82+
MinStackUsingTwoStacks minStack = new MinStackUsingTwoStacks();
83+
minStack.push(1);
84+
minStack.push(2);
2785
minStack.push(3);
28-
minStack.push(5);
29-
assertEquals(3, minStack.getMin());
86+
minStack.push(4);
87+
88+
assertEquals(1, minStack.getMin());
89+
assertEquals(4, minStack.top());
90+
91+
minStack.pop();
92+
minStack.pop();
93+
assertEquals(1, minStack.getMin());
94+
assertEquals(2, minStack.top());
95+
}
3096

97+
@Test
98+
public void testDecreasingSequence() {
99+
MinStackUsingTwoStacks minStack = new MinStackUsingTwoStacks();
100+
minStack.push(4);
101+
minStack.push(3);
31102
minStack.push(2);
32103
minStack.push(1);
104+
33105
assertEquals(1, minStack.getMin());
106+
assertEquals(1, minStack.top());
34107

35108
minStack.pop();
36109
assertEquals(2, minStack.getMin());
110+
assertEquals(2, minStack.top());
37111
}
38112
}

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy