"""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 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()