diff --git a/pytests/resources/test_queue.py b/pytests/resources/test_queue.py index a31d769bcf4b90e8830faedd1e4c7da14197d0d0..e004e7d3e3fbf1060dbb8522c18e6b712f8171ee 100644 --- a/pytests/resources/test_queue.py +++ b/pytests/resources/test_queue.py @@ -11,12 +11,82 @@ PyTests for custom Queue implementation. # System Imports. # User Class Imports. -from resources.stack import Stack +from resources.queue import Queue -class TestStack(): - test_stack = Stack() +class TestQueue(): + test_queue = Queue() - def test_(self): - pass + def test_queue_creation(self): + assert isinstance(self.test_queue, Queue) + + def test_enqueue(self): + # Test initial state. + assert len(self.test_queue._data_) == 0 + + # Test adding first element. + self.test_queue.enqueue(4) + assert len(self.test_queue._data_) == 1 + assert self.test_queue._data_[0] == 4 + + # Test adding second element. + self.test_queue.enqueue('testing') + assert len(self.test_queue._data_) == 2 + assert self.test_queue._data_[0] == 'testing' + assert self.test_queue._data_[1] == 4 + + # Works with 0, 1, and 2 elements. Assuming it works for all further n+1 elements. + + def test_dequeue(self): + # Test with two elements. + assert self.test_queue.dequeue() == 4 + + # Test with one element. + assert self.test_queue.dequeue() == 'testing' + + # Test with zero elements. + assert self.test_queue.dequeue() == None + + # Works with 0, 1, and 2 elements. Assuming it works for all further n+1 elements. + + def test_first(self): + # Test with zero elements. + assert self.test_queue.first() == None + + # Test with one element. + self.test_queue.enqueue(5) + assert self.test_queue.first() == 5 + + # Test with two elements. + self.test_queue.enqueue('testing') + assert self.test_queue.first() == 5 + + # Remove "top" element and test once again. + self.test_queue.dequeue() + assert self.test_queue.first() == 'testing' + + # Works with 0, 1, and 2 elements. Assuming it works for all further n+1 elements. + + def test_size(self): + # Test with two elements. + self.test_queue.enqueue('testing') + assert self.test_queue.size() == 2 + + # Test with one element. + self.test_queue.dequeue() + assert self.test_queue.size() == 1 + + # Test with zero elements. + self.test_queue.dequeue() + assert self.test_queue.size() == 0 + + # Works with 0, 1, and 2 elements. Assuming it works for all further n+1 elements. + + def test_is_empty(self): + # Test with zero elements. + assert self.test_queue.is_empty() == True + + # Test with more than zero elements. + self.test_queue.enqueue('') + self.test_queue.is_empty() == False diff --git a/resources/queue.py b/resources/queue.py index 341de3ee89616888732a3e16b911479a26f9eee8..fcb797015b31e61c1ce4ff743b28dfc0554f7cf9 100644 --- a/resources/queue.py +++ b/resources/queue.py @@ -10,4 +10,29 @@ Custom Queue implementation. class Queue(): - pass + def __init__(self): + self._data_ = [] + + def enqueue(self, value): + self._data_ = [value] + self._data_ + + def dequeue(self): + if self.size() > 0: + return self._data_.pop(self.size() - 1) + else: + return None + + def first(self): + if self.size() > 0: + return self._data_[self.size() - 1] + else: + return None + + def size(self): + return len(self._data_) + + def is_empty(self): + if self.size() == 0: + return True + else: + return False diff --git a/unittests/resources/queue.py b/unittests/resources/queue.py index 8cbd81fa275c86a7ae8df7cc6f3b84b8fb170258..0ad25faea082835747bd97c2340c4bdb5401acb8 100644 --- a/unittests/resources/queue.py +++ b/unittests/resources/queue.py @@ -16,9 +16,82 @@ import unittest from resources.queue import Queue -class TestStack(unittest.TestCase): +class TestQueue(unittest.TestCase): def setUp(self): - self.test_stack = Queue() + self.test_queue = Queue() - def test_(self): - pass + def test_queue_creation(self): + self.assertTrue(isinstance(self.test_queue, Queue)) + + def test_enqueue(self): + # Test initial state. + self.assertEqual(len(self.test_queue._data_), 0) + + # Test adding first element. + self.test_queue.enqueue(4) + self.assertEqual(len(self.test_queue._data_), 1) + self.assertEqual(self.test_queue._data_[0], 4) + + # Test adding second element. + self.test_queue.enqueue('testing') + self.assertEqual(len(self.test_queue._data_), 2) + self.assertEqual(self.test_queue._data_[0], 'testing') + self.assertEqual(self.test_queue._data_[1], 4) + + # Works with 0, 1, and 2 elements. Assuming it works for all further n+1 elements. + + def test_dequeue(self): + # Test with zero elements. + self.assertIsNone(self.test_queue.dequeue()) + + # Test with one element. + self.test_queue.enqueue(4) + self.assertEqual(self.test_queue.dequeue(), 4) + + # Test with two elements. + self.test_queue.enqueue(4) + self.test_queue.enqueue('testing') + self.assertEqual(self.test_queue.dequeue(), 4) + self.assertEqual(self.test_queue.dequeue(), 'testing') + + # Works with 0, 1, and 2 elements. Assuming it works for all further n+1 elements. + + def test_first(self): + # Test with zero elements. + self.assertIsNone(self.test_queue.first()) + + # Test with one element. + self.test_queue.enqueue(5) + self.assertEqual(self.test_queue.first(), 5) + + # Test with two elements. + self.test_queue.enqueue('testing') + self.assertEqual(self.test_queue.first(), 5) + + # Remove "top" element and test once again. + self.test_queue.dequeue() + self.assertEqual(self.test_queue.first(), 'testing') + + # Works with 0, 1, and 2 elements. Assuming it works for all further n+1 elements. + + def test_size(self): + # Test with zero elements. + self.assertEqual(self.test_queue.size(), 0) + + # Test with one element. + self.test_queue.enqueue(6) + self.assertEqual(self.test_queue.size(), 1) + + # Test with two elements. + self.test_queue.enqueue('testing') + self.assertEqual(self.test_queue.size(), 2) + + # Works with 0, 1, and 2 elements. Assuming it works for all further n+1 elements. + + def test_is_empty(self): + # Test with zero elements. + self.assertTrue(self.test_queue.is_empty()) + + # Test with more than zero elements. + self.test_queue.enqueue('') + self.assertFalse(self.test_queue.is_empty())