Example #1
0
class AnimalShelter:
    def __init__(self):
        self.dogs = Queue()
        self.cats = Queue()
        self.counter = 0

    def enqueue(self, *, name, species):
        if species in Animal.VALID_SPECIES:
            self.counter += 1
            getattr(self, f"{species}s").push(
                Animal(name=name, species=species, counter=self.counter))
        else:
            raise AttributeError("INVALID TYPE")

    def dequeue_cat(self):
        if self.cats.is_empty():
            raise IndexError("EMPTY CAT QUEUE")
        else:
            return self.cats.pop().name

    def dequeue_dog(self):
        if self.dogs.is_empty():
            raise IndexError("EMPTY DOG QUEUE")
        else:
            return self.dogs.pop().name

    def dequeue_any(self):
        if self.dogs.is_empty() and self.cats.is_empty():
            raise IndexError("EMPTY QUEUE")
        elif self.dogs.is_empty():
            return self.dequeue_cat()
        elif self.cats.is_empty():
            return self.dequeue_dog()
        else:
            return self.dequeue_cat() if self.dogs.peek(
            ).counter > self.cats.peek().counter else self.dequeue_dog()
Example #2
0
def test_peek():
    queue = Queue()
    queue.enqueue(1)

    assert queue.peek() == 1
Example #3
0
import sys
sys.path.append('..')

from my_queue import Queue

# Setup
q = Queue(1)
q.enqueue(3)

# Test peek
# Should be 1
assert (q.peek() == 1), "Failed in q.peek()"

# Test dequeue
# Should be 1
assert (q.dequeue() == 1), "Failed in q.dequeue()"

# Test enqueue
q.enqueue(4)
# Should be 3
assert (q.dequeue() == 3), "Failed in q.dequeue()"
# Should be 4
assert (q.dequeue() == 4), "Failed in q.dequeue()"
q.enqueue(5)
# Should be 5
assert (q.peek() == 5), "Failed in q.peek()"

print ("ALL TEST PASSED")