diff options
| author | root <root@turin.home> | 2022-01-16 14:19:54 +0000 |
|---|---|---|
| committer | root <root@turin.home> | 2022-01-16 14:19:54 +0000 |
| commit | d768da05fb2e52f291ec7e6e11f7435e668548a9 (patch) | |
| tree | b8513fb37f351eeb9e0e14a6b70268c114e159e6 | |
| parent | d7d89d19c2e795cbeb1f1b9136a9118aeacfb720 (diff) | |
Fix error which removes all elements from queue
| -rw-r--r-- | circular_queue.py | 14 | ||||
| -rw-r--r-- | 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 + |
