def test_enqueue_dequeue(): q = BucketPriorityQueue() q.enqueue(5, 'a') assert q == BucketPriorityQueue([(5, 'a')]) q.enqueue(4, 'b') assert q == BucketPriorityQueue([(4, 'b'), (5, 'a')]) assert q.dequeue() == (4, 'b') assert q == BucketPriorityQueue([(5, 'a')]) assert q.dequeue() == (5, 'a') assert q == BucketPriorityQueue() with pytest.raises(ValueError, match='empty'): _ = q.dequeue()
def test_same_priority_fifo(): a = (5, 'a') b = (5, 'b') for x, y in [(a, b), (b, a)]: q = BucketPriorityQueue() q.enqueue(*x) q.enqueue(*y) assert q assert q.dequeue() == x assert q assert q.dequeue() == y assert not q
def test_init(): q = BucketPriorityQueue() assert not q.drop_duplicate_entries assert list(q) == [] assert len(q) == 0 assert not bool(q) with pytest.raises(ValueError, match='empty'): _ = q.dequeue() q = BucketPriorityQueue(entries=[(5, 'a')]) assert not q.drop_duplicate_entries assert list(q) == [(5, 'a')] assert len(q) == 1 assert bool(q) q = BucketPriorityQueue(entries=[(5, 'a'), (6, 'b')], drop_duplicate_entries=True) assert q.drop_duplicate_entries assert list(q) == [(5, 'a'), (6, 'b')] assert len(q) == 2 assert bool(q)