package assignment0405;
import assignment.Stack;
import org.junit.Assert;
import org.junit.Test;
/**
* Created by Administrator on 2017/4/9.
*/
public class StackUtilTest {
@Test
public void reverse() throws Exception {
Stack stack = new Stack();
pushAll(stack, 1, 2, 3, 4);
Assert.assertEquals("4, 3, 2, 1", stack.toString());
StackUtil.reverse(stack);
Assert.assertEquals("1, 2, 3, 4", stack.toString());
StackUtil.reverse(stack);
Assert.assertEquals("4, 3, 2, 1", stack.toString());
}
@Test
public void remove() throws Exception {
Stack stack = new Stack();
pushAll(stack, 0, 1, 2, 3);
StackUtil.remove(stack, 1);
Assert.assertEquals("3, 2, 0", stack.toString());
pushAll(stack, 4, 5, 6, 5);
Assert.assertEquals("5, 6, 5, 4, 3, 2, 0", stack.toString());
StackUtil.remove(stack, 5);
Assert.assertEquals("6, 4, 3, 2, 0", stack.toString());
pushAll(stack, null, 7, null);
Assert.assertEquals("null, 7, null, 6, 4, 3, 2, 0", stack.toString());
StackUtil.remove(stack, null);
Assert.assertEquals("7, 6, 4, 3, 2, 0", stack.toString());
}
@Test(expected = RuntimeException.class)
public void getTop() throws Exception {
Stack stack = new Stack();
pushAll(stack, 1, 2, 3, 4, 5);
Assert.assertArrayEquals(new Object[]{5, 4, 3}, StackUtil.getTop(stack, 3));
Assert.assertArrayEquals(new Object[]{5}, StackUtil.getTop(stack, 1));
Assert.assertArrayEquals(new Object[]{5, 4, 3, 2, 1}, StackUtil.getTop(stack, 5));
//异常
StackUtil.getTop(stack, 6);
}
@Test
public void isValidPairs() throws Exception {
Assert.assertTrue(StackUtil.isValidPairs("()[]{}([])"));
Assert.assertTrue(StackUtil.isValidPairs("([e{d}f])"));
Assert.assertFalse(StackUtil.isValidPairs("([b{x]y})"));
Assert.assertFalse(StackUtil.isValidPairs("((a)[]{b(c)}"));
}
private void pushAll(Stack s, Object... objects) {
for (Object object : objects) {
s.push(object);
}
}
}