From d768da05fb2e52f291ec7e6e11f7435e668548a9 Mon Sep 17 00:00:00 2001 From: root Date: Sun, 16 Jan 2022 14:19:54 +0000 Subject: Fix error which removes all elements from queue --- circular_queue.py | 14 ++++++++------ queue-test.py | 14 ++++++++++++++ 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 + -- cgit v1.2.3