summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorleiyu3 <s444814187@gmail.com>2022-10-21 15:44:45 -0400
committerleiyu3 <s444814187@gmail.com>2022-10-21 15:44:45 -0400
commit027d0036c871a9d3bdc9769aaf3c0c59ea4b977a (patch)
tree0d06231e91a731755145a2adceb35b1071a4f1fd
downloadqueue_array_py-027d0036c871a9d3bdc9769aaf3c0c59ea4b977a.tar.gz
queue_array_py-027d0036c871a9d3bdc9769aaf3c0c59ea4b977a.zip
init commitHEADmaster
-rw-r--r--queue_array.py53
-rw-r--r--test_queue_array.py46
2 files changed, 99 insertions, 0 deletions
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 @@
1class Queue:
2 def __init__(self, size=7):
3 self.size = size+1
4 self.queue = [0]*self.size
5 self.write = 0
6 self.read = 0
7
8 def full(self):
9 return ((self.write+1)%self.size) == ((self.read)%self.size)
10
11 def empty(self):
12 return self.write == self.read
13
14 def enqueue(self, value):
15 """
16 Will add item to queue without overflowing
17 """
18 if (self.full()):
19 return
20
21 self.queue[self.write] = value
22 self.write += 1
23
24 if (self.write == self.size):
25 self.write = 0
26
27 def dequeue(self):
28 if (self.empty()):
29 return None
30
31 val = self.queue[self.read]
32 self.read += 1
33
34 if (self.read == self.size):
35 self.read = 0
36
37 return val
38
39
40if __name__ == "__main__":
41 que = Queue()
42 que.enqueue(1)
43 que.enqueue(2)
44 que.enqueue(3)
45 print(que.dequeue())
46 que.enqueue(4)
47 que.enqueue(5)
48 print(que.dequeue())
49 que.enqueue(6)
50 que.enqueue(7)
51 print(que.dequeue())
52 que.enqueue(7)
53 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 @@
1import unittest
2import queue_array as q
3
4class TestQueue(unittest.TestCase):
5 def setUp(self):
6 self.que = q.Queue()
7
8 def test_empty(self):
9 self.assertTrue(self.que.empty())
10 self.que.enqueue(5)
11 self.assertFalse(self.que.empty())
12
13 def test_full(self):
14 self.assertFalse(self.que.full())
15 self.que.enqueue(5)
16 self.que.enqueue(5)
17 self.que.enqueue(5)
18 self.que.enqueue(5)
19 self.que.enqueue(5)
20 self.que.enqueue(5)
21 self.que.enqueue(5)
22 self.assertTrue(self.que.full())
23
24 def test_dequeue2(self):
25 self.que.enqueue(1)
26 self.que.enqueue(2)
27 self.assertEqual(self.que.dequeue(), 1)
28 self.que.enqueue(3)
29 self.que.enqueue(4)
30 self.assertEqual(self.que.dequeue(), 2)
31 self.que.enqueue(5)
32 self.que.enqueue(6)
33 self.assertEqual(self.que.dequeue(), 3)
34 self.que.enqueue(7)
35 self.assertEqual(self.que.dequeue(), 4)
36 self.assertEqual(self.que.dequeue(), 5)
37 self.assertEqual(self.que.dequeue(), 6)
38 self.assertEqual(self.que.dequeue(), 7)
39 self.que.enqueue(8)
40 self.assertEqual(self.que.dequeue(), 8)
41
42
43
44
45if __name__ == "__main__":
46 unittest.main() \ No newline at end of file