def test_node_heaping(): ''' Test priority queues with nodes as elements. ''' a = Node(label='a', msg="boom!", priority=1) b = Node(label='b', msg="hi", priority=2) c = Node(label='c', msg="ok", priority=3) d = Node(label='d', msg="oh", priority=4) q = PriorityQueue([b, c, d]) assert q.min == b assert q.min.msg == 'hi' assert q.min.label == 'b' assert q == [b, c, d] q.insert(a) assert q.min == a assert q.min.msg is 'boom!' assert q.min.label == 'a' assert q == [a, b, d, c] assert q.delete('c') == c assert q.sort() == [a, b, d] assert q.min == a assert q.min.label == 'a' min = q.shift() assert min == a assert min.label == 'a' assert q.sort() == [b, d] assert q.min == b assert q.min.label == 'b' q = PriorityQueue([d, c, b, a]) assert [a, b, c, d] == q.sort() assert [a, b, c, d] == [q.shift() for x in range(q.size)] assert q.size == 0 assert q == [] from itertools import permutations nodes = [a, b, c, d] for perm in permutations(nodes): q = PriorityQueue(perm) assert [a, b, c, d] == q.sort() assert [a, b, c, d] == [q.shift() for x in range(q.size)] assert q.size == 0 assert q == []