from __future__ import annotations import sys import unittest from pathlib import Path ROOT = Path(__file__).resolve().parents[1] if str(ROOT) not in sys.path: sys.path.insert(0, str(ROOT)) from mech_workbench.probes.source import parse_source_layers, parse_source_position class SourceHelperTests(unittest.TestCase): def test_parse_source_layers_range_and_list(self): self.assertEqual(parse_source_layers("15-17,20,16"), [15, 16, 17, 20]) def test_parse_source_layers_rejects_descending_range(self): with self.assertRaises(ValueError): parse_source_layers("20-15") def test_parse_source_position_accepts_all_and_single_positions(self): self.assertEqual(parse_source_position("sweep"), "sweep") self.assertEqual(parse_source_position("all"), "all") self.assertEqual(parse_source_position("LAST"), "last") self.assertEqual(parse_source_position("-1"), "-1") def test_parse_source_position_rejects_unknown(self): with self.assertRaises(ValueError): parse_source_position("entity") if __name__ == "__main__": unittest.main()