"""Tests for DetectionTracker multi-camera stream isolation.""" from __future__ import annotations import unittest from pathlib import Path from unittest.mock import MagicMock, patch from chicken_counter.config import load_camera_config class MultiCameraTrackerIsolationTests(unittest.TestCase): def test_independent_stream_trackers(self) -> None: cfg = load_camera_config("configs/cameras/example_camera.yaml") # Test get_or_create_tracker instantiates isolated instances for different stream IDs with patch("chicken_counter.tracking.ensure_compatible_model", return_value=cfg.detection.model_path), \ patch("chicken_counter.tracking.YOLO"): from chicken_counter.tracking import DetectionTracker tracker_manager = DetectionTracker(cfg) tr1 = tracker_manager.get_or_create_tracker("CC1") tr2 = tracker_manager.get_or_create_tracker("CC2") self.assertIsNotNone(tr1) self.assertIsNotNone(tr2) self.assertIsNot(tr1, tr2, "Trackers for CC1 and CC2 must be distinct objects") # Resetting CC1 should not delete CC2 tracker tracker_manager.reset_tracking("CC1") self.assertNotIn("CC1", tracker_manager._stream_trackers) self.assertIn("CC2", tracker_manager._stream_trackers) if __name__ == "__main__": unittest.main()