From 027d0036c871a9d3bdc9769aaf3c0c59ea4b977a Mon Sep 17 00:00:00 2001 From: leiyu3 Date: Fri, 21 Oct 2022 15:44:45 -0400 Subject: init commit --- queue_array.py | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++++ test_queue_array.py | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 99 insertions(+) create mode 100644 queue_array.py create mode 100644 test_queue_array.py diff --git a/queue_array.py b/queue_array.py new file mode 100644 index 0000000..4356b4d --- /dev/null +++ b/queue_array.py @@ -0,0 +1,53 @@ +class Queue: + def __init__(self, size=7): + self.size = size+1 + self.queue = [0]*self.size + self.write = 0 + self.read = 0 + + def full(self): + return ((self.write+1)%self.size) == ((self.read)%self.size) + + def empty(self): + return self.write == self.read + + def enqueue(self, value): + """ + Will add item to queue without overflowing + """ + if (self.full()): + return + + self.queue[self.write] = value + self.write += 1 + + if (self.write == self.size): + self.write = 0 + + def dequeue(self): + if (self.empty()): + return None + + val = self.queue[self.read] + self.read += 1 + + if (self.read == self.size): + self.read = 0 + + return val + + +if __name__ == "__main__": + que = Queue() + que.enqueue(1) + que.enqueue(2) + que.enqueue(3) + print(que.dequeue()) + que.enqueue(4) + que.enqueue(5) + print(que.dequeue()) + que.enqueue(6) + que.enqueue(7) + print(que.dequeue()) + que.enqueue(7) + print(que.queue) diff --git a/test_queue_array.py b/test_queue_array.py new file mode 100644 index 0000000..b2ae945 --- /dev/null +++ b/test_queue_array.py @@ -0,0 +1,46 @@ +import unittest +import queue_array as q + +class TestQueue(unittest.TestCase): + def setUp(self): + self.que = q.Queue() + + def test_empty(self): + self.assertTrue(self.que.empty()) + self.que.enqueue(5) + self.assertFalse(self.que.empty()) + + def test_full(self): + self.assertFalse(self.que.full()) + self.que.enqueue(5) + self.que.enqueue(5) + self.que.enqueue(5) + self.que.enqueue(5) + self.que.enqueue(5) + self.que.enqueue(5) + self.que.enqueue(5) + self.assertTrue(self.que.full()) + + def test_dequeue2(self): + self.que.enqueue(1) + self.que.enqueue(2) + self.assertEqual(self.que.dequeue(), 1) + self.que.enqueue(3) + self.que.enqueue(4) + self.assertEqual(self.que.dequeue(), 2) + self.que.enqueue(5) + self.que.enqueue(6) + self.assertEqual(self.que.dequeue(), 3) + self.que.enqueue(7) + self.assertEqual(self.que.dequeue(), 4) + self.assertEqual(self.que.dequeue(), 5) + self.assertEqual(self.que.dequeue(), 6) + self.assertEqual(self.que.dequeue(), 7) + self.que.enqueue(8) + self.assertEqual(self.que.dequeue(), 8) + + + + +if __name__ == "__main__": + unittest.main() \ No newline at end of file -- cgit v1.2.3