41 lines
1.2 KiB
Python
41 lines
1.2 KiB
Python
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()
|