Beispiel #1
0
 def __init__(self):
     pass
     # Pick one of these to use.
     # Stack must have the container you dont choose for Queue
     
     #self.container = LinkedList()
     self.container = ArrayDeque()
class Stack:
    def __init__(self):
        # Pick one of these to use.
        # Stack must have the container you dont choose for Queue
        
        #self.container = LinkedList()
        self.container = ArrayDeque()

    def push(self, data):
        self.container.push_back(data)
    
    def pop(self):
        return self.container.pop_back()
    
    def get_size(self):
        return self.container.get_size()

    def __str__(self):
        return str(self.container)
 def test_insert_full(self):
     deque = ArrayDeque(5)
     [deque.push(i) for i in range(5)]
     with self.assertRaises(ValueError):
         deque.insert(1)
 def test_peek_non_empty(self):
     deque = ArrayDeque()
     deque.insert(1)
     self.assertEqual(deque.peek(), 1)
 def test_peek_empty(self):
     deque = ArrayDeque()
     with self.assertRaises(ValueError):
         deque.peek()
 def test_head_non_empty(self):
     deque = ArrayDeque()
     deque.push(1)
     self.assertEqual(deque.head(), 1)
 def test_head_empty(self):
     deque = ArrayDeque()
     with self.assertRaises(ValueError):
         deque.head()
    return end - start


if __name__ == '__main__':
    print('TEST_NUM: {}'.format(TEST_NUM))

    queue = ArrayQueue(TEST_NUM)
    print('ArrayQueue, time: {:.3f} s'.format(queue_exec_time(queue)))

    queue = LinkedListQueue(TEST_NUM)
    print('LinkedListQueue, time: {:.3f} s'.format(queue_exec_time(queue)))

    queue = ArrayLoopQueue(TEST_NUM)
    print('ArrayLoopQueue, time: {:.3f} s'.format(queue_exec_time(queue)))

    queue = LinkedListLoopQueue(TEST_NUM)
    print('LinkedListLoopQueue, time: {:.3f} s'.format(queue_exec_time(queue)))

    deque = ArrayDeque(TEST_NUM)
    print('ArrayDeque, time: {:.3f} s'.format(deque_exec_time(deque)))

    deque = LinkedListDeque(TEST_NUM)
    print('LinkedListDeque, time: {:.3f} s'.format(deque_exec_time(deque)))

    deque = ArrayLoopDeque(TEST_NUM)
    print('ArrayLoopDeque, time: {:.3f} s'.format(deque_exec_time(deque)))

    deque = LinkedListLoopDeque(TEST_NUM)
    print('LinkedListLoopDeque, time: {:.3f} s'.format(deque_exec_time(deque)))
 def test_composite2(self):
     deque = ArrayDeque()
     deque.push(1)
     deque.push(2)
     self.assertEqual(deque.remove(), 1)
     self.assertEqual(deque.remove(), 2)
 def test_push_one(self):
     deque = ArrayDeque()
     deque.push(1)
     self.assertEqual(deque.list(), [1])
    def test_fix_len_deque(self):
        deque = ArrayDeque(4)
        deque.push_tail(1)
        deque.push_front(2)
        assert deque.is_empty() == False
        assert deque.is_full() == False
        assert deque.capacity == 4
        assert deque.__repr__() == 'ArrayDeque: front [2,1] tail'
        assert len(deque) == 2
        assert deque.front() == 2
        assert deque.tail() == 1

        deque.push_tail(3)
        deque.push_front(4)
        assert deque.is_empty() == False
        assert deque.is_full() == True
        assert deque.capacity == 4
        assert deque.__repr__() == 'ArrayDeque: front [4,2,1,3] tail'
        assert len(deque) == 4
        assert deque.front() == 4
        assert deque.tail() == 3

        with pytest.raises(FullError):
            deque.push_front(1)
        with pytest.raises(FullError):
            deque.push_tail(2)

        assert deque.pop_front() == 4
        assert deque.pop_front() == 2
        assert deque.pop_tail() == 3
        assert deque.pop_tail() == 1
        assert deque.is_empty() == True
        assert deque.is_full() == False
        assert deque.capacity == 4
        assert deque.__repr__() == 'ArrayDeque: front [] tail'
        assert len(deque) == 0
        with pytest.raises(EmptyError):
            deque.front()
        with pytest.raises(EmptyError):
            deque.tail()
        with pytest.raises(EmptyError):
            deque.pop_front()
        with pytest.raises(EmptyError):
            deque.pop_tail()
 def test_inf_empty_deque(self):
     deque = ArrayDeque()
     assert deque.is_empty() == True
     assert deque.is_full() == False
     assert deque.capacity == float('inf')
     assert deque.__repr__() == 'ArrayDeque: front [] tail'
     assert len(deque) == 0
     with pytest.raises(EmptyError):
         deque.front()
     with pytest.raises(EmptyError):
         deque.tail()
     with pytest.raises(EmptyError):
         deque.pop_front()
     with pytest.raises(EmptyError):
         deque.pop_tail()
    def test_fix_len_empty_deque(self):
        deque = ArrayDeque(0)
        assert deque.is_empty() == True
        assert deque.is_full() == True
        assert deque.capacity == 0
        assert deque.__repr__() == 'ArrayDeque: front [] tail'
        assert len(deque) == 0
        with pytest.raises(EmptyError):
            deque.front()
        with pytest.raises(EmptyError):
            deque.tail()
        with pytest.raises(EmptyError):
            deque.pop_front()
        with pytest.raises(EmptyError):
            deque.pop_tail()

        deque = ArrayDeque(3)
        assert deque.is_empty() == True
        assert deque.is_full() == False
        assert deque.capacity == 3
        assert deque.__repr__() == 'ArrayDeque: front [] tail'
        assert len(deque) == 0
        with pytest.raises(EmptyError):
            deque.front()
        with pytest.raises(EmptyError):
            deque.tail()
        with pytest.raises(EmptyError):
            deque.pop_front()
        with pytest.raises(EmptyError):
            deque.pop_tail()
    def test_inf_deque(self):
        deque = ArrayDeque()
        deque.push_tail(1)
        deque.push_front(2)
        deque.push_front(3)
        deque.push_tail(4)
        assert deque.is_empty() == False
        assert deque.is_full() == False
        assert deque.capacity == float('inf')
        assert deque.__repr__() == 'ArrayDeque: front [3,2,1,4] tail'
        assert len(deque) == 4
        assert deque.front() == 3
        assert deque.tail() == 4

        assert deque.pop_front() == 3
        assert deque.pop_tail() == 4
        assert deque.is_empty() == False
        assert deque.is_full() == False
        assert deque.capacity == float('inf')
        assert deque.__repr__() == 'ArrayDeque: front [2,1] tail'
        assert len(deque) == 2
        assert deque.front() == 2
        assert deque.tail() == 1

        assert deque.pop_tail() == 1
        assert deque.pop_front() == 2
        assert deque.is_empty() == True
        assert deque.is_full() == False
        assert deque.capacity == float('inf')
        assert deque.__repr__() == 'ArrayDeque: front [] tail'
        assert len(deque) == 0
        with pytest.raises(EmptyError):
            deque.front()
        with pytest.raises(EmptyError):
            deque.tail()
        with pytest.raises(EmptyError):
            deque.pop_front()
        with pytest.raises(EmptyError):
            deque.pop_tail()
 def test_insert_one(self):
     deque = ArrayDeque()
     deque.insert(1)
     self.assertEqual(deque.list(), [1])
 def test_composite1(self):
     deque = ArrayDeque()
     deque.push(1)
     deque.insert(2)
     deque.insert(3)
     deque.push(4)
     deque.insert(5)
     deque.push(6)
     self.assertEqual(deque.remove(), 5)
     deque.push(7)
     deque.insert(8)
     self.assertEqual(deque.pop(), 7)
     self.assertEqual(deque.list(), [6, 4, 1, 2, 3, 8])
 def test_insert_two(self):
     deque = ArrayDeque()
     deque.insert(1)
     deque.insert(2)
     self.assertEqual(deque.list(), [1, 2])
def test_circle_deque_features():
    deque = ArrayDeque()
    assert len(deque) == 0
    assert deque.is_empty() == True

    deque.add_last(5)
    assert deque._array == [5]

    deque.add_first(3)
    assert deque._array == [3, 5]

    deque.add_first(7)
    assert deque._array == [7, 3, 5]

    assert deque.first() == 7

    deque.del_last()
    assert len(deque) == 2
    assert deque._array == [7, 3]

    deque.del_first()
    assert deque._array == [3]
    assert deque.is_empty() == False

    deque2 = ArrayDeque([1, 2, 3])
    assert deque2._array == [1, 2, 3]
 def test_push_two(self):
     deque = ArrayDeque()
     deque.push(1)
     deque.push(2)
     self.assertEqual(deque.list(), [2, 1])