package org.coding.five;
import org.coding.one.Stack;
import org.junit.After;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
public class StackUtilTest {
Stack s ;
@Before
public void setUp() throws Exception {
s = new Stack();
s.push(1);
s.push(2);
s.push(3);
s.push(4);
s.push(5);
}
@After
public void tearDown() throws Exception {
s = null;
}
@Test
public void testReverse() {
StackUtil.reverse(s);
Assert.assertEquals(5, s.size());
Assert.assertEquals(1, s.pop());
Assert.assertEquals(2, s.pop());
Assert.assertEquals(3, s.pop());
Assert.assertEquals(4, s.pop());
Assert.assertEquals(5, s.pop());
}
@Test
public void testReverse2() {
StackUtil.reverse2(s);
Assert.assertEquals(5, s.size());
Assert.assertEquals(1, s.pop());
Assert.assertEquals(2, s.pop());
Assert.assertEquals(3, s.pop());
Assert.assertEquals(4, s.pop());
Assert.assertEquals(5, s.pop());
}
@Test
public void testRemove() {
StackUtil.remove(s, 1);
Assert.assertEquals(4, s.size());
Assert.assertEquals(5, s.pop());
Assert.assertEquals(4, s.pop());
Assert.assertEquals(3, s.pop());
Assert.assertEquals(2, s.pop());
Assert.assertEquals(0, s.size());
}
@Test
public void testGetTop() {
Object[] top = StackUtil.getTop(s, 2);
Assert.assertEquals(5, top[0]);
Assert.assertEquals(4, top[1]);
Assert.assertEquals(5, s.size());
Assert.assertEquals(5, s.pop());
Assert.assertEquals(4, s.pop());
Assert.assertEquals(3, s.pop());
Assert.assertEquals(2, s.pop());
Assert.assertEquals(1, s.pop());
Assert.assertEquals(0, s.size());
}
@Test
public void testIsValidPairs() {
String s = "([e{d}f])";
boolean v = StackUtil.isValidPairs(s);
Assert.assertEquals(true, v);
s = "([b{x]y})";
v = StackUtil.isValidPairs(s);
Assert.assertEquals(false, v);
}
}