assembly-economics/checkpoints/test_run_checkpoint.py
tegwick 945b28e6ab ASSEMBLY-WP-0017 finished: IMM filter on observed US data (B3 through mid-2026, B3→B4 flip candidate Q3 2026, not confirmed), robustness, checkpoint pointer; residual to WP-0015-T07
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 22:41:08 +02:00

52 lines
2.1 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 TestRegimePointer(unittest.TestCase):
def test_full_record_points_to_regime_report(self):
full = rc.render(date(2027, 1, 15), "full", "steady", [], None, "x", "d.jsonl")
light = rc.render(date(2027, 1, 15), "light", "steady", [], None, "x", "d.jsonl")
self.assertIn("results/matching.md", full)
self.assertNotIn("results/matching.md", light)
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()