Exemple #1
0
 def test_stack_init(self):
     stk = Stack()
     self.assertEqual(stk.size(), 0)
     self.assertEqual(stk.is_empty(), True)
     with self.assertRaises(IndexError):
         stk.pop()
     with self.assertRaises(IndexError):
         stk.peek()
Exemple #2
0
 def test_stack_pop(self):
     stk = Stack()
     random_values = get_random_values()
     for v in random_values:
         stk.push(v)
     for v in random_values[::-1]:
         stk.pop()
     self.assertEqual(stk.is_empty(), True)
     with self.assertRaises(IndexError):
         stk.pop()
     with self.assertRaises(IndexError):
         stk.peek()
def test_peeking_at_stack_does_not_remove_item():
    stack = Stack()
    stack.push(1)

    assert_equal(stack.empty(), False)
    assert_equal(stack.peek(), 1)
    assert_equal(stack.empty(), False)
def test_peeking_at_stack_returns_last_item():
    stack = Stack()
    stack.push(1)
    stack.push(2)
    stack.push(3)

    assert_equal(stack.peek(), 3)
def test_pushing_to_stack_adds_item_to_stack():
    stack = Stack()

    assert_equal(stack.empty(), True)
    stack.push(1)
    assert_equal(stack.empty(), False)
    assert_equal(stack.peek(), 1)
Exemple #6
0
 def test_stack_peek(self):
     stk = Stack()
     random_values = get_random_values()
     for v in random_values:
         stk.push(v)
     for v in random_values[::-1]:
         self.assertEqual(stk.peek(), v)
         stk.pop()
Exemple #7
0
 def test_stack_push(self):
     stk = Stack()
     random_values = get_random_values()
     for v in random_values:
         stk.push(v)
         self.assertEqual(stk.is_empty(), False)
         self.assertEqual(stk.peek(), v)
         self.assertEqual(stk.pop(), v)
Exemple #8
0
 def test_stack_reverse(self):
     stk = Stack()
     random_values = get_random_values()
     for v in random_values:
         stk.push(v)
     stk.reverse()
     for v in random_values:
         self.assertEqual(stk.peek(), v)
         stk.pop()
Exemple #9
0
class MinStack:
  def __init__(self):
    self.mins  = Stack()
    self.items = Stack()

  def push(self, item):
    min = self.mins.peek()
    if min == None or item < min:
      self.mins.push(item)

    return self.items.push(item)

  def pop(self):
    item = self.items.pop()
    if item == self.mins.peek():
      self.mins.pop()

    return item

  def min(self):
    return self.mins.peek()
def test_peeking_at_empty_stack_returns_none():
    stack = Stack()

    assert_equal(stack.peek(), None)