Пример #1
0
    def test_batch_decrement2(self):
        pq = PriorityQueue()
        pq.add_element(Deneme('a', 1))
        pq.add_element(Deneme('b', 5))
        pq.add_element(Deneme('c', 10))
        pq.add_element(Deneme('a', 7))
        pq.add_element(Deneme('c', 9))
        pq.add_element(Deneme('a', 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 == 'c'

        def update(obj):
            obj.val -= 6

        pq.batch_decrement(validate, update)
        self.assertTrue(pq.elements[0].val == 12)
        self.assertTrue(pq.elements[1].val == 7)
        self.assertTrue(pq.elements[2].val == 5)
        self.assertTrue(pq.elements[3].val == 1)
        self.assertTrue(pq.elements[4].val == 3)
        self.assertTrue(pq.elements[5].val == 4)