nation_optimizer / tests /unit /test_sector.py
thewildofficial
feat(core): implement simulation primitives
f2aa0c0
Raw
History Blame Contribute Delete
1.29 kB
import pytest
from core.config import CRITICAL_RATIO, SURPLUS_RATIO, WASTAGE_RATIO
from core.sector import Sector
def test_demand_scales_with_baseline_population_and_event_multiplier() -> None:
sector = Sector(name="Health", baseline=90, event_multiplier=1.5)
assert sector.demand(2_000_000) == pytest.approx(270)
def test_thresholds_use_configured_ratios() -> None:
sector = Sector(name="Defense", baseline=100)
demand = sector.demand(1_000_000)
assert sector.critical(1_000_000) == pytest.approx(demand * CRITICAL_RATIO)
assert sector.surplus(1_000_000) == pytest.approx(demand * SURPLUS_RATIO)
assert sector.wastage(1_000_000) == pytest.approx(demand * WASTAGE_RATIO)
def test_revenue_computation_stores_revenue_factor_and_revenue() -> None:
sector = Sector(name="Defense", baseline=100)
sector.allocate(150)
revenue = sector.compute_revenue(population=1_000_000, productivity=1.2)
assert sector.revenue_factor_value == pytest.approx(1.8)
assert sector.revenue == pytest.approx(150 * 1.8 * 1.2)
assert revenue == sector.revenue
def test_allocation_below_critical_is_critical_failure() -> None:
sector = Sector(name="Defense", baseline=100)
sector.allocate(39)
assert sector.is_critical_failure(1_000_000)