test_vision.py 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. import pytest
  2. from robot_control.src.vision.datamatrix import DataMatrixReader
  3. from robot_control.src.utils.config import VisionConfig
  4. @pytest.fixture
  5. def vision_config_mock():
  6. return VisionConfig(
  7. camera_id=-1,
  8. resolution=(640, 480),
  9. frame_rate=30,
  10. exposure=100,
  11. gain=1.0,
  12. bbox=(0, 0, 640, 480)
  13. )
  14. @pytest.fixture
  15. def vision_config_real():
  16. return VisionConfig(
  17. camera_id=0,
  18. resolution=(640, 480),
  19. frame_rate=30,
  20. exposure=100,
  21. gain=1.0,
  22. bbox=(0, 0, 640, 480)
  23. )
  24. @pytest.fixture
  25. def datamatrix_reader(vision_config_mock):
  26. return DataMatrixReader(vision_config_mock)
  27. @pytest.fixture
  28. def datamatrix_reader_realcam(vision_config_real):
  29. return DataMatrixReader(vision_config_real)
  30. class TestDataMatrixReader:
  31. def test_init_reader(self, datamatrix_reader_realcam: DataMatrixReader):
  32. assert datamatrix_reader_realcam is not None
  33. def test_read_success(self, datamatrix_reader: DataMatrixReader):
  34. datamatrix_reader.initialize()
  35. result = datamatrix_reader.read_datamatrix()
  36. assert result == "60"
  37. def test_read_failure(self, datamatrix_reader: DataMatrixReader):
  38. datamatrix_reader.initialize()
  39. result = datamatrix_reader.read_datamatrix() # first is success
  40. result = datamatrix_reader.read_datamatrix() # second is failure
  41. assert result is None
  42. def test_cleanup(self, datamatrix_reader: DataMatrixReader):
  43. datamatrix_reader.initialize()
  44. datamatrix_reader.cleanup()
  45. assert datamatrix_reader.camera is not None
  46. def test_cleanup_real_camera(self, datamatrix_reader_realcam: DataMatrixReader):
  47. try:
  48. datamatrix_reader_realcam.initialize()
  49. datamatrix_reader_realcam.cleanup()
  50. assert datamatrix_reader_realcam.camera is not None
  51. except Exception:
  52. pytest.skip("No real camera available for testing")