def test_all_items_are_returned_exactly_once(items): """We always get every item exactly once.""" pq = NaivePriorityQueue() for item in items: pq.put(item) assert len(pq) == len(items) while len(pq) > 0: items.remove(pq.get()) assert len(items) == 0
def test_items_are_returned_in_priority_order(items): """We always get the smallest item first.""" pq = NaivePriorityQueue() for item in items: pq.put(item) assert len(pq) == len(items) current = pq.get() while len(pq) > 0: prior, current = current, pq.get() assert prior <= current
def mkpq(items): """Create and fill a NaivePriorityQueue.""" pq = NaivePriorityQueue() [pq.put(item) for item in items] return pq
def test_put_only(): """If the queue is empty, putting is trivial.""" pq = NaivePriorityQueue() pq.put("a") assert pq._items == ["a"]