summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorroot <root@turin.home>2022-01-16 14:19:54 +0000
committerroot <root@turin.home>2022-01-16 14:19:54 +0000
commitd768da05fb2e52f291ec7e6e11f7435e668548a9 (patch)
treeb8513fb37f351eeb9e0e14a6b70268c114e159e6
parentd7d89d19c2e795cbeb1f1b9136a9118aeacfb720 (diff)
Fix error which removes all elements from queue
-rw-r--r--circular_queue.py14
-rw-r--r--queue-test.py14
2 files changed, 22 insertions, 6 deletions
diff --git a/circular_queue.py b/circular_queue.py
index 44954bd..6b36748 100644
--- a/circular_queue.py
+++ b/circular_queue.py
@@ -11,11 +11,13 @@ class circular_queue:
self.pointer += 1
if self.pointer >= self.size:
self.pointer = 0
-
def average(self):
- queue = self.queue
- while None in queue:
- queue.remove(None)
- if len(queue) == 0:
+ value = 0
+ length = 0
+ for i in self.queue:
+ if i != None:
+ value += i
+ length += 1
+ if length == 0:
return 0
- return sum(queue) / len(queue)
+ return value / length
diff --git a/queue-test.py b/queue-test.py
index c68ec51..131c2c5 100644
--- a/queue-test.py
+++ b/queue-test.py
@@ -12,3 +12,17 @@ def test_queue_average():
def test_queue_average_null():
a = circular_queue(50)
assert a.average() == 0
+
+def test_queue_average_size():
+ a = circular_queue(50)
+ print(len(a.queue))
+ a.average()
+ print(len(a.queue))
+ assert len(a.queue) == 50
+
+def test_queue_circle():
+ a = circular_queue(20)
+ for i in range(0,2000):
+ a.add(1)
+ assert a.average() == 1
+