package algorithm; import datastructure.basic.Stack; import org.junit.Assert; import org.junit.Test; import org.junit.Before; import org.junit.After; import java.util.Arrays; /** * StackUtil Tester. * * @author <Authors name> * @version 1.0 * @since <pre>四月 9, 2017</pre> */ public class StackUtilTest { @Before public void before() throws Exception { } @After public void after() throws Exception { } private Stack build(Object... args) { Stack stack = new Stack(); Arrays.stream(args).forEach(stack::push); return stack; } private Object[] toArray(Stack stack) { Object[] array = new Object[stack.size()]; for (int i = array.length - 1; i >= 0; --i) { array[i] = stack.pop(); } Arrays.stream(array).forEach(stack::push); return array; } /** * Method: reverse(Stack s) */ @Test public void testReverse() throws Exception { //TODO: Test goes here... Stack stack = build(1, 3, 5, 7, 9); StackUtil.reverse(stack); Assert.assertArrayEquals(new Object[] {9, 7, 5, 3, 1}, toArray(stack)); } /** * Method: remove(Stack s, Object o) */ @Test public void testRemove() throws Exception { //TODO: Test goes here... Stack stack = build(1, 3, 5, 7, 9, 11, 13); StackUtil.remove(stack, 0); Assert.assertArrayEquals(new Object[] {1, 3, 5, 7, 9, 11, 13}, toArray(stack)); StackUtil.remove(stack, 1); Assert.assertArrayEquals(new Object[] {3, 5, 7, 9, 11, 13}, toArray(stack)); StackUtil.remove(stack, 13); Assert.assertArrayEquals(new Object[] {3, 5, 7, 9, 11}, toArray(stack)); StackUtil.remove(stack, 7); Assert.assertArrayEquals(new Object[] {3, 5, 9, 11}, toArray(stack)); } /** * Method: getTop(Stack s, int len) */ @Test public void testGetTop() throws Exception { //TODO: Test goes here... Stack stack = build(1, 3, 5); Object[] array = toArray(stack); Assert.assertArrayEquals(new Object[] {}, StackUtil.getTop(stack, 0)); Assert.assertArrayEquals(new Object[] {1, 3, 5}, array); Assert.assertArrayEquals(new Object[] {3, 5}, StackUtil.getTop(stack, 2)); Assert.assertArrayEquals(new Object[] {1, 3, 5}, array); Assert.assertArrayEquals(new Object[] {1, 3, 5}, StackUtil.getTop(stack, 3)); Assert.assertArrayEquals(new Object[] {1, 3, 5}, array); Assert.assertArrayEquals(new Object[] {1, 3, 5}, StackUtil.getTop(stack, 4)); Assert.assertArrayEquals(new Object[] {1, 3, 5}, array); } /** * Method: isValidPairs(String s) */ @Test public void testIsValidPairs() throws Exception { //TODO: Test goes here... Assert.assertTrue(StackUtil.isValidPairs("{sqrt[p*(p-a)*(p-b)*(p-c)]}")); Assert.assertFalse(StackUtil.isValidPairs("{sqrt[p*[p-a)*(p-b]*(p-c)]}")); } }