import pytest from robot_control.src.vision.datamatrix import DataMatrixReader from robot_control.src.utils.config import VisionConfig @pytest.fixture def vision_config_mock(): return VisionConfig( camera_id=-1, resolution=(640, 480), frame_rate=30, exposure=100, gain=1.0, bbox=(0, 0, 640, 480) ) @pytest.fixture def vision_config_real(): return VisionConfig( camera_id=0, resolution=(640, 480), frame_rate=30, exposure=100, gain=1.0, bbox=(0, 0, 640, 480) ) @pytest.fixture def datamatrix_reader(vision_config_mock): return DataMatrixReader(vision_config_mock) @pytest.fixture def datamatrix_reader_realcam(vision_config_real): return DataMatrixReader(vision_config_real) class TestDataMatrixReader: def test_init_reader(self, datamatrix_reader_realcam: DataMatrixReader): assert datamatrix_reader_realcam is not None def test_read_success(self, datamatrix_reader: DataMatrixReader): datamatrix_reader.initialize() result = datamatrix_reader.read_datamatrix() assert result == "60" def test_read_failure(self, datamatrix_reader: DataMatrixReader): datamatrix_reader.initialize() result = datamatrix_reader.read_datamatrix() # first is success result = datamatrix_reader.read_datamatrix() # second is failure assert result is None def test_cleanup(self, datamatrix_reader: DataMatrixReader): datamatrix_reader.initialize() datamatrix_reader.cleanup() assert datamatrix_reader.camera is not None def test_cleanup_real_camera(self, datamatrix_reader_realcam: DataMatrixReader): try: datamatrix_reader_realcam.initialize() datamatrix_reader_realcam.cleanup() assert datamatrix_reader_realcam.camera is not None except Exception: pytest.skip("No real camera available for testing")