assembly-economics/checkpoints/test_run_checkpoint.py

37 lines
1.3 KiB
Python
Raw Normal View History

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