def test_insert(self):
        pq = PriorityQueue()
        pq.add_element(1)

        self.assertTrue(pq.elements[0] == 1)
        for i in xrange(1, len(pq.elements)):
            self.assertTrue(pq.elements[i] is None)
    def test_insert3(self):
        pq = PriorityQueue()
        pq.add_element(5)
        pq.add_element(4)
        pq.add_element(6)

        self.assertTrue(pq.elements[0] == 6)
        self.assertTrue(pq.elements[1] == 4)
        self.assertTrue(pq.elements[2] == 5)
        for i in xrange(3, len(pq.elements)):
            self.assertTrue(pq.elements[i] is None)
    def test_batch_increment(self):
        pq = PriorityQueue()
        pq.add_element(Deneme('a', 1))
        pq.add_element(Deneme('b', 5))
        pq.add_element(Deneme('b', 10))
        pq.add_element(Deneme('a', 7))
        pq.add_element(Deneme('a', 9))
        pq.add_element(Deneme('b', 12))

        self.assertTrue(pq.elements[0].val == 12)
        self.assertTrue(pq.elements[1].val == 9)
        self.assertTrue(pq.elements[2].val == 10)
        self.assertTrue(pq.elements[3].val == 1)
        self.assertTrue(pq.elements[4].val == 7)
        self.assertTrue(pq.elements[5].val == 5)

        for i in xrange(6, len(pq.elements)):
            self.assertTrue(pq.elements[i] is None)

        def validate(obj):
            return obj.label == 'a'

        def update(obj):
            obj.val += 1

        pq.batch_increment(validate, update)
        self.assertTrue(pq.elements[0].val == 12)
        self.assertTrue(pq.elements[1].val == 10)
        self.assertTrue(pq.elements[2].val == 10)
        self.assertTrue(pq.elements[3].val == 2)
        self.assertTrue(pq.elements[4].val == 8)
        self.assertTrue(pq.elements[5].val == 5)
    def test_insert4(self):
        pq = PriorityQueue()
        pq.add_element(5)
        pq.add_element(4)
        pq.add_element(6)
        pq.add_element(6)
        pq.add_element(3)
        pq.add_element(7)

        self.assertTrue(pq.elements[0] == 7)
        self.assertTrue(pq.elements[1] == 6)
        self.assertTrue(pq.elements[2] == 6)
        self.assertTrue(pq.elements[3] == 4)
        self.assertTrue(pq.elements[4] == 3)
        self.assertTrue(pq.elements[5] == 5)

        for i in xrange(6, len(pq.elements)):
            self.assertTrue(pq.elements[i] is None)