Пример #1
0
class AnimalQueue(object):
    def __init__(self):
        self.dogs = Queue()
        self.cats = Queue()
        self.order = 0

    def enqueue(self, animal):
        animal.order = self.order
        self.order += 1
        if isinstance(animal, Dog):
            self.dogs.enqueue(animal)
        if isinstance(animal, Cat):
            self.cats.enqueue(animal)

    def dequeue_any(self):
        if self.dogs.queue_empty():
            return self.dequeue_cat()
        elif self.cats.queue_empty():
            return self.dequeue_dog()
        elif self.dogs.peek().order < self.cats.peek().order:
            return self.dequeue_dog()
        else:
            return self.dequeue_cat()

    def dequeue_dog(self):
        return self.dogs.dequeue()

    def dequeue_cat(self):
        return self.cats.dequeue()
class TestQueueMethods(unittest.TestCase):

    def setUp(self):
        # Setup
        self.q = Queue(1)
        self.q.enqueue(2)
        self.q.enqueue(3)
        return 

    def tearDown(self):
        #Clear For Next Test
        self.q = None

    def test_peek(self):
        self.assertEqual(self.q.peek(), 1)
        pass

    def test_enqueue(self):
        self.q.enqueue(4)
        self.assertEqual(self.q.peek(),1)
        pass

    def test_deque(self):
        self.assertEqual(self.q.dequeue(),1)
        self.assertEqual(self.q.dequeue(),2)
        self.assertEqual(self.q.dequeue(),3)
        pass

    def test_total(self):
        self.assertEqual(self.q.dequeue(),1)
        self.q.enqueue(4)
        self.assertEqual(self.q.dequeue(),2)
        self.assertEqual(self.q.dequeue(),3)
        self.assertEqual(self.q.dequeue(),4)
        self.q.enqueue(5)
        self.assertEqual(self.q.peek(),5)
        pass