Example #1
0
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_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())
  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_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)
Example #7
0
 def __init__(self):
     self.top = None
     self.min = MinStack()
Example #8
0
 def setUp(self):
     self.stack = MinStack()
     self.stack.push(2)
     self.stack.push(1)
Example #9
0
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)
Example #10
0
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