"""Smoke tests для cuframes Python bindings. В Phase 0 (skeleton) проверяем что: - модуль импортируется - версия читается - error классы существуют и являются нормальной иерархией Subscriber / DLPack тесты появятся в следующих фазах (см. issue gx/cuframes#6, tasks #198+). """ import cuframes def test_version_format(): v = cuframes.version_string() assert isinstance(v, str) parts = v.split(".") assert len(parts) >= 3 assert all(p.isdigit() for p in parts[:3]) def test_protocol_version_is_uint(): pv = cuframes.protocol_version() assert isinstance(pv, int) assert pv >= 0 def test_pixel_format_enum_members(): assert cuframes.PixelFormat.NV12.value == 0 assert cuframes.PixelFormat.YUV420P.value == 1 def test_subscriber_mode_enum_members(): assert cuframes.SubscriberMode.NEWEST_ONLY.value == 0 assert cuframes.SubscriberMode.STRICT_ORDER.value == 1 def test_error_hierarchy(): """Все subtype'ы наследуются от CuframesError.""" for sub in [ cuframes.CuframesPublisherGone, cuframes.CuframesFrameTimeout, cuframes.CuframesDeviceLost, cuframes.CuframesShmError, cuframes.CuframesProtocolMismatch, cuframes.CuframesInvalidArgument, cuframes.CuframesOutOfMemory, cuframes.CuframesInternal, ]: assert issubclass(sub, cuframes.CuframesError)