Files
gps-denied-onboard/test_02_2_02_feature_tracking_loss_recovery.py
Denys Zaitsev d7e1066c60 Initial commit
2026-04-03 23:25:54 +03:00

57 lines
2.1 KiB
Python

import pytest
pytest.skip("Obsolete test file replaced by component-specific unit tests", allow_module_level=True)
from unittest.mock import Mock
from f02_flight_processing_engine import FlightProcessingEngine
@pytest.fixture
def mock_deps():
return {
"failure_coord": Mock(),
"chunk_manager": Mock(),
}
@pytest.fixture
def engine(mock_deps):
return FlightProcessingEngine(
vo_frontend=Mock(), factor_graph=Mock(), cvgl_backend=Mock(),
failure_coordinator=mock_deps["failure_coord"],
route_chunk_manager=mock_deps["chunk_manager"]
)
class TestTrackingLossRecovery:
"""Tests defined in 02.2.02_feature_tracking_loss_recovery.md"""
def test_handle_tracking_loss_starts_progressive_search(self, engine, mock_deps):
engine.flight_status = "PROCESSING"
mock_session = Mock()
mock_deps["failure_coord"].start_search.return_value = mock_session
result = engine.handle_tracking_loss("flight_123", 10)
mock_deps["failure_coord"].start_search.assert_called_once()
assert result == "BLOCKED"
assert engine.flight_status == "BLOCKED"
mock_deps["failure_coord"].create_user_input_request.assert_called_once()
def test_apply_user_fix_returns_success_and_resumes(self, engine, mock_deps):
engine.flight_status = "BLOCKED"
mock_deps["failure_coord"].apply_user_anchor.return_value = True
mock_fix_data = Mock(frame_id=10)
result = engine.apply_user_fix("flight_123", mock_fix_data)
assert result["status"] == "SUCCESS"
assert engine.flight_status == "PROCESSING"
def test_apply_user_fix_rejects_invalid_anchor(self, engine, mock_deps):
engine.flight_status = "BLOCKED"
mock_deps["failure_coord"].apply_user_anchor.return_value = False
mock_fix_data = Mock(frame_id=10)
result = engine.apply_user_fix("flight_123", mock_fix_data)
assert result["status"] == "ERROR"
assert engine.flight_status == "BLOCKED" # Status remains blocked