from __future__ import annotations import unittest from src.hdmi_control import _parse_v4l2_devices, _recommend_capture_device class HdmiControlTests(unittest.TestCase): def test_parse_v4l2_devices_extracts_nodes(self) -> None: text = ( "USB Video:\n" "\t/dev/video0\n" "\t/dev/video1\n" "\n" "bcm2835-codec:\n" "\t/dev/video10\n" ) items = _parse_v4l2_devices(text) self.assertEqual(items[0]["name"], "USB Video") self.assertEqual(items[0]["nodes"], ["/dev/video0", "/dev/video1"]) self.assertTrue(items[0]["is_capture_candidate"]) def test_parse_v4l2_devices_handles_empty(self) -> None: self.assertEqual(_parse_v4l2_devices(""), []) def test_recommend_capture_device_skips_codec_only_nodes(self) -> None: text = ( "bcm2835-codec:\n" "\t/dev/video10\n" "\n" "USB Video:\n" "\t/dev/video0\n" ) items = _parse_v4l2_devices(text) self.assertFalse(items[0]["is_capture_candidate"]) self.assertEqual(_recommend_capture_device(["/dev/video0", "/dev/video10"], items), "/dev/video0") if __name__ == "__main__": unittest.main()