def test_lifo():
    stack = Stack()

    stack.push(5)
    stack.push(6)
    assert stack.pop() == 6
    assert stack.pop() == 5
예제 #2
0
def stack_reverse(l):
    s = Stack(len(l))
    for e in l:
        s.push(e)
    r = []
    while not s.is_empty():
        r.append(s.pop())
    return r
def test_push_pop_empty():
    stack = Stack()
    assert stack.empty()

    stack.push(5)
    assert stack.pop() == 5

    assert stack.empty()
def test_capacity():
    # Create a stack that can hold a single element only.
    stack = Stack(1)
    assert stack.empty()

    stack.push(5)

    # Attempting to push an additional item should fail.
    with pytest.raises(TypeError) as e_info:
        stack.push(6)
예제 #5
0
def stack_reverse(l):
    s = Stack(len(l))
    for e in l:
        s.push(e)
    r = []
    while not s.is_empty():
        r.append(s.pop())
    return r
예제 #6
0
class StackPushTestCase(unittest.TestCase):

    def setUp(self):
        self.stack = Stack()

    def test_push_should_add_item_to_the_end_of_items_list(self):
        self.stack.push(1)
        self.assertEqual(self.stack.items[0], 1)

        self.stack.push(2)
        self.assertEqual(self.stack.items[1], 2)

    def test_push_should_increment_stack_size(self):
        self.stack.push(1)
        self.assertEqual(self.stack.size(), 1)
예제 #7
0
#-----------------------------------------------------------------------
# evaluate.py
#-----------------------------------------------------------------------

import stdio
import math
from arraystack import Stack

#-----------------------------------------------------------------------

# Read a fully parenthesized numeric expression from standard input,
# evaluate it, and write the resulting number to standard output.

ops = Stack()
values = Stack()

while not stdio.isEmpty():
    token = stdio.readString()
    if   token == '+':    ops.push(token)
    elif token == '-':    ops.push(token)
    elif token == '*':    ops.push(token)
    elif token == 'sqrt': ops.push(token)
    elif token == ')':
        # Pop, evaluate, and push result.
        op = ops.pop()
        value = values.pop()
        if   op == '+':    value = values.pop() + value
        elif op == '-':    value = values.pop() - value
        elif op == '*':    value = values.pop() * value
        elif op == 'sqrt': value = math.sqrt(value)
        values.push(value)
예제 #8
0
 def setUp(self):
     self.stack = Stack()
예제 #9
0
class StackSizeTestCase(unittest.TestCase):

    def setUp(self):
        self.stack = Stack()

    def test_size_should_return_the_number_of_items_in_the_stack(self):
        self.assertEqual(self.stack.size(), 0)

        self.stack.push(1)
        self.assertEqual(self.stack.size(), 1)

        self.stack.push(2)
        self.assertEqual(self.stack.size(), 2)

        self.stack.pop()
        self.assertEqual(self.stack.size(), 1)

        self.stack.peek()
        self.assertEqual(self.stack.size(), 1)
예제 #10
0
 def setUp(self):
     self.stack = Stack()
     self.stack.push(1)
     self.stack.push(2)
     self.stack.push(3)
예제 #11
0
class StackPeekTestCase(unittest.TestCase):

    def setUp(self):
        self.stack = Stack()
        self.stack.push(1)
        self.stack.push(2)
        self.stack.push(3)

    def test_peek_should_return_the_last_item_of_its_items_list(self):
        self.assertEqual(self.stack.peek(), 3)
        self.assertEqual(self.stack.peek(), 3)
        self.assertEqual(self.stack.peek(), 3)

    def test_peek_should_return_none_if_stack_is_already_empty(self):
        self.stack.pop()
        self.stack.pop()
        self.stack.pop()
        self.assertEqual(self.stack.peek(), None)

    def test_peek_should_not_decrement_stack_size(self):
        self.stack.peek()
        self.assertEqual(self.stack.size(), 3)
def test_pop():
    stack = Stack()
    with pytest.raises(TypeError) as e_info:
        stack.pop()