def test_enqueue_dequeue_many_chunks(self):
        """ CHUNKS_COUNT add chunks of size CHUNK_SIZE
            and check along each enqueue/dequeue call """
        queue = CircularQueue()
        chunks_count = 100

        elements_count = 1
        for i in range(chunks_count):
            self.assertEqual(queue.count, 0)
            chunk_size = i + 1

            # enqueue
            for counter in range(chunk_size):
                self.assertEqual(queue.count, elements_count-1)
                queue.enqueue("SMTH")
                self.assertEqual(queue.count, elements_count)
                elements_count += 1
            # dequeue
            for counter in range(chunk_size):
                elements_count -= 1
                self.assertEqual(queue.count, elements_count)
                queue.dequeue()
                self.assertEqual(queue.count, elements_count-1)

            self.assertEqual(queue.count, 0)
 def test_circular_motion(self):
     """ Add and dequeue elements in such a way that
         they will form a circular queue"""
     queue = CircularQueue(capacity=5)
     for num in range(5):
         queue.enqueue(num)
     for _ in range(3):
         queue.dequeue()
     """ Queue should now have two empty values at the start """
     queue.enqueue("CIRCLE HAS BEEN FORMED")
     self.assertEqual(queue.count, 3)
     self.assertEqual(list(queue), [3, 4, "CIRCLE HAS BEEN FORMED"])
Example #3
0
def main():
    b = BoundedQueue(10000)
    c = CircularQueue(10000)
    for i in range(10000):
        b.enqueue(i)
        c.enqueue(i)

    a=time.time()
    for i in range(10000):
        b.dequeue()
    print("bq:",time.time()-a)

    a=time.time()
    for i in range(10000):
        c.dequeue()
    print("cq:",time.time()-a)
    def test_enqueue_dequeue(self):
        """ Should empty queue """
        queue = CircularQueue()
        test_element = "Some value"
        queue.enqueue(test_element)
        el_from_queue = queue.dequeue()

        self.assertEqual(el_from_queue, test_element)
        self.assertEqual(queue.count, 0)
    def test_initial_capacity_1_enq_deq_20_elements(self):
        """ Set an initial capacity of 1 and add/remove 20 elements,
            checking along the way if everything works correctly.
            The list should resize itself when appropriate"""
        elements_count = 20
        initial_capacity = 1
        queue = CircularQueue(initial_capacity)
        for num in range(elements_count):
            queue.enqueue(num)

        self.assertEqual(queue.count, elements_count)
        for num in range(elements_count):
            dequeued_num = queue.dequeue()
            self.assertEqual(dequeued_num, num)

        self.assertEqual(queue.count, 0)
    def test_enqueue_dequeue_100_elements(self):
        """ Should return an empty queue """
        queue = CircularQueue()
        element_to_add = "ELEMENT"
        elements_count = 100

        # add to queue
        for _ in range(elements_count):
            queue.enqueue(element_to_add)

        # assert
        self.assertEqual(list(queue), [element_to_add] * elements_count)
        for idx in range(elements_count):
            self.assertEqual(queue.count, elements_count - idx)
            dequeued_element = queue.dequeue()
            self.assertEqual(element_to_add, dequeued_element)
            self.assertEqual(queue.count, elements_count - idx - 1)

        self.assertEqual(queue.count, 0)
    def test_dequeue_empty_queue(self):
        """ Should throw exception """
        queue = CircularQueue()

        with self.assertRaises(Exception):
            queue.dequeue()