"""Figures and ledger scenarios must share the same dual-ledger numbers.""" from __future__ import annotations import sys from pathlib import Path ROOT = Path(__file__).resolve().parents[1] sys.path.insert(0, str(ROOT)) from regulator_paper_assumptions import REGISTRY, v # noqa: E402 from system_b_ledger import RETIRED_COMPOSITE_MW, build_ledger # noqa: E402 def test_registry_scenarios_match_ledger(): ledger = build_ledger() assert v("scenario_conservative_mw") == ledger.accreditation_mw["conservative"] assert v("scenario_reference_mw") == ledger.accreditation_mw["reference"] assert v("scenario_full_mw") == ledger.accreditation_mw["full"] assert v("hub_net_electric_mw") == ledger.hub_net_electric_mw assert v("hub_thermal_mwth") == ledger.hub_thermal_mwth assert v("shortfall_2030_mw") == ledger.shortfall_mw assert v("peak_record_mw") == 5111.5 def test_full_scenario_is_electric_sum_not_retired_composite(): full = v("bess_mw") + v("dsm_mw") + v("intertie_mw") + v("hub_net_electric_mw") assert full == v("scenario_full_mw") assert full != RETIRED_COMPOSITE_MW mixed = (v("bess_mw") + v("hub_thermal_mwth") + v("hub_contingent_thermal_mwth") + v("dsm_mw") + v("intertie_mw")) assert mixed == RETIRED_COMPOSITE_MW def test_cost_bands_and_hub_net_are_registry_backed(): assert v("gas_20yr_low_b") < v("gas_20yr_high_b") assert v("hybrid_20yr_high_b") < v("gas_20yr_low_b") assert v("hub_net_electric_mw") < v("hub_thermal_mwth") assert REGISTRY["scenario_full_mw"][1] == "C" def test_figure_script_reads_peak_2024_not_retired_alias(): src = (Path(__file__).resolve().parents[1] / "scripts" / "generate_report_v2_figures.py").read_text() assert "peak_load_2024_mw" not in src assert 'v("peak_record_mw")' in src or "v('peak_record_mw')" in src