class StackWithMin(object): def __init__(self): self.top = None self.min = MinStack() def pop(self): if self.top == None: raise SystemExit("Empty Stack") item = self.top.data self.top = self.top.next self.min.pop() return item def push(self, data): new_top = Node(data) new_top.next = self.top self.top = new_top self.min.push(data) def peek(self): if self.top == None: raise SystemExit("Empty Stack") else: return self.top.data def get_min(self): return self.min.peek()
def main(): stack = MinStack() stack.push(1) stack.push(2) stack.push(3) print('Minimalna wartosc na stosie: {}'.format(stack.get_min_value()))
def test_top(self): # Given # [1, 2, 3, 4, 5, 6, 7] minStack = MinStack() minStack.push(1) minStack.push(2) minStack.push(3) minStack.push(4) minStack.push(5) minStack.push(6) minStack.push(7) expected_output = 7 self.assertEqual(minStack.top(), expected_output)
def test_pop(self): # Given # [1, 2, 3, 4, 5, 6, 7] minStack = MinStack() minStack.push(1) minStack.push(2) minStack.push(3) minStack.push(4) minStack.push(5) minStack.push(6) minStack.push(7) expected_output = [2, 3, 4, 5, 6, 7] minStack.pop() self.assertEqual(expected_output, minStack.data)
def test_minstack(): minStack = MinStack() minStack.push(-2) minStack.push(0) minStack.push(-3) assert minStack.getMin() == -3 minStack.pop() assert minStack.top() == 0 assert minStack.getMin() == -2
class TestMinStack(unittest.TestCase): def setUp(self): self.stack = MinStack() self.stack.push(2) self.stack.push(1) def test_push(self): self.stack.push(3) self.assertEqual(self.stack.stack[-1], 3) def test_pop(self): self.stack.pop() self.assertEqual(self.stack.stack[-1], 2) def test_top(self): self.assertEqual(self.stack.top(), 1) def test_getMin(self): self.assertEqual(self.stack.getMin(), 1) self.stack.push(-1000) self.assertEqual(self.stack.getMin(), -1000)
def test_push(self): # Given minStack = MinStack() minStack.push(None) minStack.push(-2) minStack.push(0) minStack.push(-3) minStack.push(None) minStack.push(None) minStack.push(None) expected_output = [None, -2,0,-3,None,None,None] self.assertEqual(minStack.data, expected_output)
def test_getmin(self): minStack = MinStack() minStack.push(None) minStack.push(-2) minStack.push(0) minStack.push(-3) minStack.push(None) minStack.push(None) minStack.push(None) self.assertEqual(-3, minStack.getMin())