package test;
import static org.junit.Assert.*;
import org.junit.Before;
import org.junit.Test;
import main.Stack;
import main.StackUtil;
public class StackUtilTest {
Stack stack;
@Before
public void setUp() throws Exception {
stack = new Stack();
}
@Test
public void testReverse() {
stack.push(1);
stack.push(2);
stack.push(3);
stack.push(4);
stack.push(5);
StackUtil.reverse(stack);
int[] expected = { 1, 2, 3, 4, 5 };
for (int i = 0; !stack.isEmpty(); i++) {
assertEquals(expected[i], stack.pop());
}
}
@Test
public void testRemove() {
stack.push(1);
stack.push(2);
stack.push(3);
stack.push(4);
stack.push(5);
StackUtil.remove(stack, 9);
int[] expected = { 5, 4, 3, 2, 1 };
for (int i = 0; !stack.isEmpty(); i++) {
assertEquals(expected[i], stack.pop());
}
stack.push(1);
stack.push(2);
stack.push(3);
stack.push(4);
stack.push(5);
StackUtil.remove(stack, 3);
int[] expected1 = { 5, 4, 2, 1 };
for (int i = 0; !stack.isEmpty(); i++) {
assertEquals(expected1[i], stack.pop());
}
}
@Test
public void testGetTop() {
stack.push(1);
stack.push(2);
stack.push(3);
stack.push(4);
stack.push(5);
Object[] result = StackUtil.getTop(stack, 3);
int[] expected = { 5, 4, 3 };
for (int i = 0; i < result.length; i++) {
assertEquals(expected[i], result[i]);
}
result = StackUtil.getTop(stack, 9);
int[] expected1 = { 5, 4, 3, 2, 1 };
for (int i = 0; i < result.length; i++) {
assertEquals(expected1[i], result[i]);
}
result = StackUtil.getTop(stack, -1);
assertEquals(0, result.length);
}
@Test
public void testIsValidPairs() {
assertTrue(StackUtil.isValidPairs("12wed333"));
assertTrue(StackUtil.isValidPairs("1{2[3(4)5]6}"));
assertTrue(StackUtil.isValidPairs("{{{[[[((()))]]]}}}"));
assertTrue(StackUtil.isValidPairs("{}[]()([{}])"));
assertFalse(StackUtil.isValidPairs(")abcd{}[]()"));
assertFalse(StackUtil.isValidPairs("a{b[c}d]()"));
assertFalse(StackUtil.isValidPairs("a{b)c}[]{}"));
assertFalse(StackUtil.isValidPairs("{}[](()"));
}
}