Exemple #1
0
 def setup(self):
     self.queue = PriorityHeap()
Exemple #2
0
class TestPriorityHeap(object):
    """Test the basic use of a Priority queue.

    """

    def setup(self):
        self.queue = PriorityHeap()

    def test_push_pop(self):

        self.queue.push(1, 5)
        self.queue.push(0, 6)
        assert len(self.queue) == 2
        assert self.queue.pop() == 6
        assert self.queue.pop() == 5
        with raises(IndexError):
            self.queue.pop()
        assert self.queue._counter == 0

    def test_ordering(self):

        self.queue.push(0, 5)
        self.queue.push(0, 4)
        self.queue.push(0, 6)
        assert list(self.queue) == [5, 4, 6]

    def test_removing(self):

        self.queue.push(0, 5)
        self.queue.push(0, 6)
        self.queue.remove(5)
        assert len(self.queue) == 1
        assert self.queue.pop() == 6

    def test_pushing_while_iterating(self):

        self.queue.push(1, 1)
        for i, obj in enumerate(self.queue):
            if i == 10:
                break
            self.queue.push(1, 2)
            self.queue.push(0, 3)
        assert len(self.queue) == 10
        assert 3 not in self.queue._heap