From 7a67a3cff81e58e7bcbf9530d35fa75b50687a23 Mon Sep 17 00:00:00 2001 From: SterlingSunshine Date: Sat, 11 Dec 2021 23:52:49 -0800 Subject: [PATCH] All tests passing --- stacks_queues/queue.py | 43 ++++++++++++++++++++++++++++++++++++------ stacks_queues/stack.py | 15 +++++++++++---- tests/test_queue.py | 1 + 3 files changed, 49 insertions(+), 10 deletions(-) diff --git a/stacks_queues/queue.py b/stacks_queues/queue.py index d66dab2..f10440e 100644 --- a/stacks_queues/queue.py +++ b/stacks_queues/queue.py @@ -23,34 +23,64 @@ def enqueue(self, element): In the store are occupied returns None """ - pass + + # buffer is full + if self.size == self.buffer_size: + raise QueueFullException + + # buffer is empty and new + if self.front == -1: + print("Imma new buffer!") + self.front = 0 + self.rear = 1 + self.store[self.front] = element + self.size += 1 + return + + self.store[self.rear] = element + self.rear = (self.rear + 1 ) % self.buffer_size + self.size += 1 def dequeue(self): """ Removes and returns an element from the Queue Raises a QueueEmptyException if The Queue is empty. """ - pass + # queue empty + if self.size == 0: + raise QueueEmptyException + + element = self.store[self.front] + self.front = (self.front + 1) % self.buffer_size + self.size -= 1 + + return element def front(self): """ Returns an element from the front of the Queue and None if the Queue is empty. Does not remove anything. """ - pass + if self.size == 0: + return None + + return self.store[self.front] def size(self): """ Returns the number of elements in The Queue """ - pass + return self.size def empty(self): """ Returns True if the Queue is empty And False otherwise. """ - pass + if self.size == 0: + return True + + return False def __str__(self): """ Returns the Queue in String form like: @@ -58,4 +88,5 @@ def __str__(self): Starting with the front of the Queue and ending with the rear of the Queue. """ - pass + + return str([self.store[index % self.buffer_size] for index in range(self.front, (self.front + self.size))]) diff --git a/stacks_queues/stack.py b/stacks_queues/stack.py index 94fb2a6..76e6611 100644 --- a/stacks_queues/stack.py +++ b/stacks_queues/stack.py @@ -12,22 +12,29 @@ def push(self, element): """ Adds an element to the top of the Stack. Returns None """ - pass + self.store.add_first(element) def pop(self): """ Removes an element from the top Of the Stack + returns Value popped Raises a StackEmptyException if The Stack is empty. returns None """ - pass + if self.store.length() < 1: + raise StackEmptyException + + return self.store.remove_first() def empty(self): """ Returns True if the Stack is empty And False otherwise """ - pass + if self.store.length() < 1: + return True + + return False def __str__(self): """ Returns the Stack in String form like: @@ -35,4 +42,4 @@ def __str__(self): Starting with the top of the Stack and ending with the bottom of the Stack. """ - pass + return str(self.store) diff --git a/tests/test_queue.py b/tests/test_queue.py index 7887eba..9ca948f 100644 --- a/tests/test_queue.py +++ b/tests/test_queue.py @@ -13,6 +13,7 @@ def test_it_can_create_a_queue(queue): def test_you_can_add_to_queue(queue): queue.enqueue(10) + print(str(queue)) assert str(queue) == "[10]" def test_you_can_add_multiple_items(queue):