From b69bfca32def8c2aa2da8220bac5f7d648cddb71 Mon Sep 17 00:00:00 2001 From: Tejasrahane <161036451+Tejasrahane@users.noreply.github.com> Date: Sun, 19 Oct 2025 05:30:27 +0530 Subject: [PATCH 1/5] Add doctest for circular queue overflow condition Added a doctest to test the QUEUE IS FULL exception when attempting to enqueue an element into a full circular queue. This improves test coverage for line 67 in data_structures/queues/circular_queue.py. Fixes #9943 --- data_structures/queues/circular_queue.py | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/data_structures/queues/circular_queue.py b/data_structures/queues/circular_queue.py index efbf1efdc42d..83687c7363d0 100644 --- a/data_structures/queues/circular_queue.py +++ b/data_structures/queues/circular_queue.py @@ -1,6 +1,4 @@ # Implementation of Circular Queue (using Python lists) - - class CircularQueue: """Circular FIFO queue with a fixed capacity""" @@ -17,7 +15,7 @@ def __len__(self) -> int: >>> len(cq) 0 >>> cq.enqueue("A") # doctest: +ELLIPSIS - >>> cq.array ['A', None, None, None, None] >>> len(cq) @@ -51,21 +49,28 @@ def enqueue(self, data): """ This function inserts an element at the end of the queue using self.rear value as an index. + >>> cq = CircularQueue(5) >>> cq.enqueue("A") # doctest: +ELLIPSIS - >>> (cq.size, cq.first()) (1, 'A') >>> cq.enqueue("B") # doctest: +ELLIPSIS - >>> cq.array ['A', 'B', None, None, None] >>> (cq.size, cq.first()) (2, 'A') + >>> cq2 = CircularQueue(2) + >>> cq2.enqueue("X").enqueue("Y") # doctest: +ELLIPSIS + + >>> cq2.enqueue("Z") # Queue is full + Traceback (most recent call last): + ... + Exception: QUEUE IS FULL """ if self.size >= self.n: raise Exception("QUEUE IS FULL") - self.array[self.rear] = data self.rear = (self.rear + 1) % self.n self.size += 1 @@ -75,6 +80,7 @@ def dequeue(self): """ This function removes an element from the queue using on self.front value as an index and returns it + >>> cq = CircularQueue(5) >>> cq.dequeue() Traceback (most recent call last): @@ -93,7 +99,6 @@ def dequeue(self): """ if self.size == 0: raise Exception("UNDERFLOW") - temp = self.array[self.front] self.array[self.front] = None self.front = (self.front + 1) % self.n From f9971af5929b58b28bcd59e3dcc4a895a23bb5a3 Mon Sep 17 00:00:00 2001 From: Maxim Smolskiy Date: Sun, 19 Oct 2025 23:24:11 +0300 Subject: [PATCH 2/5] Update circular_queue.py --- data_structures/queues/circular_queue.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/data_structures/queues/circular_queue.py b/data_structures/queues/circular_queue.py index 83687c7363d0..84f57eabb159 100644 --- a/data_structures/queues/circular_queue.py +++ b/data_structures/queues/circular_queue.py @@ -1,4 +1,6 @@ # Implementation of Circular Queue (using Python lists) + + class CircularQueue: """Circular FIFO queue with a fixed capacity""" @@ -99,6 +101,7 @@ def dequeue(self): """ if self.size == 0: raise Exception("UNDERFLOW") + temp = self.array[self.front] self.array[self.front] = None self.front = (self.front + 1) % self.n From 3814c017078389fa996060fd7543bd369a7327b4 Mon Sep 17 00:00:00 2001 From: Maxim Smolskiy Date: Sun, 19 Oct 2025 23:24:44 +0300 Subject: [PATCH 3/5] Update circular_queue.py --- data_structures/queues/circular_queue.py | 1 + 1 file changed, 1 insertion(+) diff --git a/data_structures/queues/circular_queue.py b/data_structures/queues/circular_queue.py index 84f57eabb159..ee719e8aefef 100644 --- a/data_structures/queues/circular_queue.py +++ b/data_structures/queues/circular_queue.py @@ -73,6 +73,7 @@ def enqueue(self, data): """ if self.size >= self.n: raise Exception("QUEUE IS FULL") + self.array[self.rear] = data self.rear = (self.rear + 1) % self.n self.size += 1 From 80c9139acf23d744b852fff4fea783547ff9e693 Mon Sep 17 00:00:00 2001 From: Maxim Smolskiy Date: Sun, 19 Oct 2025 23:26:45 +0300 Subject: [PATCH 4/5] Update circular_queue.py --- data_structures/queues/circular_queue.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/data_structures/queues/circular_queue.py b/data_structures/queues/circular_queue.py index ee719e8aefef..cdf0d6321f17 100644 --- a/data_structures/queues/circular_queue.py +++ b/data_structures/queues/circular_queue.py @@ -63,10 +63,9 @@ def enqueue(self, data): ['A', 'B', None, None, None] >>> (cq.size, cq.first()) (2, 'A') - >>> cq2 = CircularQueue(2) - >>> cq2.enqueue("X").enqueue("Y") # doctest: +ELLIPSIS + >>> cq.enqueue("C").enqueue("D").enqueue("E") # doctest: +ELLIPSIS - >>> cq2.enqueue("Z") # Queue is full + >>> cq2.enqueue("F") Traceback (most recent call last): ... Exception: QUEUE IS FULL From 8985c7dd86ec90ce7b1bf9a6f1cfaef06ce37351 Mon Sep 17 00:00:00 2001 From: Maxim Smolskiy Date: Sun, 19 Oct 2025 23:30:03 +0300 Subject: [PATCH 5/5] Update circular_queue.py --- data_structures/queues/circular_queue.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data_structures/queues/circular_queue.py b/data_structures/queues/circular_queue.py index cdf0d6321f17..e9cb2cac4fd8 100644 --- a/data_structures/queues/circular_queue.py +++ b/data_structures/queues/circular_queue.py @@ -65,7 +65,7 @@ def enqueue(self, data): (2, 'A') >>> cq.enqueue("C").enqueue("D").enqueue("E") # doctest: +ELLIPSIS - >>> cq2.enqueue("F") + >>> cq.enqueue("F") Traceback (most recent call last): ... Exception: QUEUE IS FULL