package com.github.miniyk2012.coding2017.basic.stack; import static org.junit.Assert.*; import org.junit.After; import org.junit.Before; import org.junit.Rule; import org.junit.Test; import org.junit.rules.ExpectedException; public class QuickMinStackTest { QuickMinStack stack; @Before public void setUp() throws Exception { } @After public void tearDown() throws Exception { } @Rule public ExpectedException expectedEx = ExpectedException.none(); @Test public void test() { stack = new QuickMinStack<Integer>(); stack.push(5); stack.push(3); stack.push(2); stack.push(4); stack.push(1); assertEquals(1, stack.findMin()); assertEquals(1, stack.pop()); assertEquals(2, stack.findMin()); assertEquals(4, stack.pop()); assertEquals(2, stack.findMin()); assertEquals(2, stack.pop()); assertEquals(3, stack.findMin()); // [3, 5] stack.push(7); // [7,3,5] assertEquals(3, stack.findMin()); stack.push(-1); // [-1,7,3,5] assertEquals(-1, stack.findMin()); assertEquals(-1, stack.pop()); assertEquals(3, stack.findMin()); assertEquals(7, stack.pop()); assertEquals(3, stack.findMin()); // [3,5] stack.push(3); // [3,3,5] assertEquals(3, stack.pop()); // [3,5] assertEquals(3, stack.findMin()); assertEquals(3, stack.pop()); // [5] assertEquals(5, stack.findMin()); assertEquals(5, stack.pop()); // [] //栈为空,抛出异常 expectedEx.expect(Exception.class); stack.pop(); } }