Files
rune/tests/test_orchestration_budget.py
T

54 lines
1.6 KiB
Python

"""Identity pin budgets: explicit, measured, visible overflow."""
from rune.orchestration.budget import BudgetRegistry, PinBudget
def test_reserve_within_budget_is_measured_and_true():
reg = BudgetRegistry()
reg.register(PinBudget("high", 5))
assert reg.reserve("high", "pin1", 3) is True
assert reg.used("high") == 3
def test_overflow_raises_pressure_and_calls_strategy():
calls: list[tuple[str, int]] = []
reg = BudgetRegistry(strategy=lambda p, u: calls.append((p, u)))
reg.register(PinBudget("high", 5))
reg.reserve("high", "pin1", 3)
assert reg.reserve("high", "pin2", 3) is False # 6 > 5
assert reg.pressure() == ["high"]
assert calls == [("high", 6)]
assert reg.used("high") == 6 # overflow item still measured
def test_priority_classes_are_separate():
reg = BudgetRegistry()
reg.register(PinBudget("high", 5))
reg.register(PinBudget("low", 10))
reg.reserve("high", "a", 5)
reg.reserve("low", "b", 8)
assert reg.pressure() == []
reg.reserve("high", "c", 1) # high overflows
assert reg.pressure() == ["high"]
assert reg.used("low") == 8 # low unaffected
def test_used_is_exact_sum():
reg = BudgetRegistry()
reg.register(PinBudget("high", 100))
reg.reserve("high", "a", 2)
reg.reserve("high", "b", 3)
reg.reserve("high", "c", 5)
assert reg.used("high") == 10
def test_reserve_rejects_negative_size():
reg = BudgetRegistry()
reg.register(PinBudget("high", 5))
try:
reg.reserve("high", "p", -1)
raise AssertionError("expected ValueError")
except ValueError:
pass
assert reg.used("high") == 0