Spaces:
Running
Running
File size: 903 Bytes
a8784d9 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | """Priority queue ordering + complexity-contract tests."""
from src.queue_manager import PriorityJobQueue, page_priority
def test_priority_order_cheap_first():
q = PriorityJobQueue()
q.push(page_priority(64, 0), "expensive")
q.push(page_priority(4, 0), "cheap")
q.push(page_priority(16, 0), "mid")
order = [q.pop().payload for _ in range(3)]
assert order == ["cheap", "mid", "expensive"]
def test_fifo_tie_break():
q = PriorityJobQueue()
for i in range(5):
q.push(1.0, i) # identical priority
assert [q.pop().payload for _ in range(5)] == [0, 1, 2, 3, 4]
def test_pop_empty_returns_none():
assert PriorityJobQueue().pop() is None
def test_len_and_peek():
q = PriorityJobQueue()
q.push(2.0, "b")
q.push(1.0, "a")
assert len(q) == 2
assert q.peek().payload == "a"
assert len(q) == 2 # peek does not consume
|