Skip to content

Instantly share code, notes, and snippets.

@mcclane
Created October 13, 2018 03:46
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mcclane/555e453a98632a0356afac5a65a76473 to your computer and use it in GitHub Desktop.
Save mcclane/555e453a98632a0356afac5a65a76473 to your computer and use it in GitHub Desktop.
import unittest
# from queue_array import Queue
from queue_linked import Queue
class TestLab1(unittest.TestCase):
def test_queue(self):
'''Trivial test to ensure method names and parameters are correct'''
q = Queue(5)
q.is_empty()
q.is_full()
q.enqueue('thing')
q.dequeue()
q.size()
def test_queue_01(self):
"""Test the queue by checking empty, full, adding 100, checking empty, full, removing 100, checking empty, full"""
q = Queue(100)
# Check empty, full, size
self.assertTrue(q.is_empty())
self.assertFalse(q.is_full())
self.assertEqual(q.size(), 0)
# Add items to the queue
for i in range(100):
q.enqueue(i)
# Check empty, full, and size
self.assertFalse(q.is_empty())
self.assertTrue(q.is_full)
# Remove all the items from the queue
for i in range(100):
self.assertEqual(q.dequeue(), i)
# Check empty, size, and full
self.assertTrue(q.is_empty())
self.assertFalse(q.is_full())
self.assertEqual(q.size(), 0)
def test_queue_empty_dequeue(self):
"""Make sure the queue raises an IndexError when trying to dequeue from an empty queue"""
q = Queue(1)
with self.assertRaises(IndexError):
q.dequeue()
def test_queue_full_enqueue(self):
"""Make sure the queue raises an IndexError when trying to enqueue a full queue"""
q = Queue(1)
q.enqueue("123abc")
with self.assertRaises(IndexError):
q.enqueue("123abc")
def test_queue_large(self):
"""Test the queue by checking empty, full, adding 100000, checking empty, full, removing 1000000, checking empty, full"""
q = Queue(100000)
# Check empty, full, size
self.assertTrue(q.is_empty())
self.assertFalse(q.is_full())
self.assertEqual(q.size(), 0)
# Add items to the queue
for i in range(100000):
q.enqueue(i)
# Check empty, full, and size
self.assertFalse(q.is_empty())
self.assertTrue(q.is_full)
# Remove all the items from the queue
for i in range(100000):
self.assertEqual(q.dequeue(), i)
# Check empty, size, and full
self.assertTrue(q.is_empty())
self.assertFalse(q.is_full())
self.assertEqual(q.size(), 0)
def test_queue_circular(self):
"""Make sure the queue can loop around"""
q = Queue(10)
for i in range(10):
q.enqueue(i)
for i in range(5):
self.assertEqual(q.dequeue(), i)
for i in range(5):
q.enqueue(i)
for i in range(5, 10):
self.assertEqual(q.dequeue(), i)
for i in range(q.size()):
q.dequeue()
if __name__ == '__main__':
unittest.main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment