assembly-economics/checkpoints/test_run_checkpoint.py
tegwick 141c5d9e5c ASSEMBLY-WP-0009-T06: predictions v1 (P-2026-001…004), growth-aligned band ranges; runner cites registered predictions
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

Assistant: claude-code
Assistant-Model: opus
Assistant-Process: 14913@bnt-lap001
Assistant-Session: add7ef69-b901-4756-9a67-34cf1125d96f
2026-10-13 16:01:15 +02:00

44 lines
1.7 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

"""Tests for the checkpoint runner (offline). Usage:
python3 -B -m unittest discover -s checkpoints -p 'test_*.py'
"""
import unittest
from datetime import date
from pathlib import Path
import run_checkpoint as rc
SCHEDULE = (Path(__file__).parent / "schedule.md").read_text()
class TestWindow(unittest.TestCase):
def test_monthly_and_steady_windows(self):
self.assertEqual(rc.active_phase(date(2026, 11, 15), "light", SCHEDULE), "transition")
self.assertEqual(rc.active_phase(date(2027, 4, 15), "light", SCHEDULE), "steady")
self.assertEqual(rc.active_phase(date(2027, 1, 20), "full", SCHEDULE), "steady")
def test_out_of_window(self):
self.assertIsNone(rc.active_phase(date(2026, 10, 1), "light", SCHEDULE))
self.assertIsNone(rc.active_phase(date(2026, 11, 15), "full", SCHEDULE))
def test_parser_handles_ranges(self):
sched = "| setup | `light` | 2026-10-14 – 2026-10-16 | daily | x |\n"
self.assertEqual(rc.active_phase(date(2026, 10, 15), "light", sched), "setup")
self.assertIsNone(rc.active_phase(date(2026, 10, 17), "light", sched))
class TestPredictions(unittest.TestCase):
def test_registered_predictions_are_cited(self):
preds = rc.registered()
self.assertIn("P-2026-001", rc.band_position(preds, "L1", "US"))
self.assertIn("P-2026-002", rc.band_position(preds, "L2", "EU27_2020"))
self.assertEqual(rc.band_position(preds, "L9", "US"), "no prediction registered")
class TestNumberGuard(unittest.TestCase):
def test_numbers_extraction(self):
self.assertEqual(rc._numbers("EU at 19.95 % in 2025, US 23.8."), {"19.95", "2025", "23.8"})
if __name__ == "__main__":
unittest.main()