"""Unit tests for ExperimentStatus enum.""" from model_manager.utils.models.experiment_status import ExperimentStatus def test_experiment_status_values(): """Test that all expected status values exist.""" assert ExperimentStatus.ORCHESTRATOR_WAITING_PROC == 'ORCHESTRATOR_WAITING_PROC' assert ExperimentStatus.TRAINING_SUCCESS == 'TRAINING_SUCCESS' assert ExperimentStatus.TRAINING_ERROR == 'TRAINING_ERROR' assert ExperimentStatus.TRACKING_SENT == 'TRACKING_SENT' assert ExperimentStatus.TRACKING_SEND_ERROR == 'TRACKING_SEND_ERROR' assert ExperimentStatus.FILE_DELETED == 'FILE_DELETED' assert ExperimentStatus.FILE_DELETE_ERROR == 'FILE_DELETE_ERROR' def test_experiment_status_count(): """Test that enum has exactly 8 status values.""" assert len(ExperimentStatus) == 8 def test_experiment_status_is_string(): """Test that enum values are strings.""" for status in ExperimentStatus: assert isinstance(status.value, str) assert isinstance(status, str) def test_experiment_status_membership(): """Test membership checks for status values.""" assert 'ORCHESTRATOR_WAITING_PROC' in [s.value for s in ExperimentStatus] assert 'TRAINING_SUCCESS' in [s.value for s in ExperimentStatus] assert 'TRAINING_ERROR' in [s.value for s in ExperimentStatus] assert 'TRACKING_SENT' in [s.value for s in ExperimentStatus] assert 'TRACKING_SEND_ERROR' in [s.value for s in ExperimentStatus] assert 'FILE_DELETED' in [s.value for s in ExperimentStatus] assert 'FILE_DELETE_ERROR' in [s.value for s in ExperimentStatus] def test_experiment_status_iteration(): """Test that enum can be iterated.""" statuses = list(ExperimentStatus) assert len(statuses) == 8 assert ExperimentStatus.ORCHESTRATOR_WAITING_PROC in statuses assert ExperimentStatus.TRAINING_SUCCESS in statuses assert ExperimentStatus.TRAINING_ERROR in statuses assert ExperimentStatus.TRACKING_SENT in statuses assert ExperimentStatus.TRACKING_SEND_ERROR in statuses assert ExperimentStatus.FILE_DELETED in statuses assert ExperimentStatus.FILE_DELETE_ERROR in statuses def test_experiment_status_comparison(): """Test that enum values can be compared with strings.""" assert ExperimentStatus.ORCHESTRATOR_WAITING_PROC == 'ORCHESTRATOR_WAITING_PROC' assert ExperimentStatus.TRAINING_SUCCESS == 'TRAINING_SUCCESS' assert ExperimentStatus.TRAINING_ERROR != 'TRAINING_SUCCESS' def test_experiment_status_access_by_name(): """Test accessing enum members by name.""" assert ( ExperimentStatus['ORCHESTRATOR_WAITING_PROC'] == ExperimentStatus.ORCHESTRATOR_WAITING_PROC ) assert ExperimentStatus['TRAINING_SUCCESS'] == ExperimentStatus.TRAINING_SUCCESS assert ExperimentStatus['TRAINING_ERROR'] == ExperimentStatus.TRAINING_ERROR assert ExperimentStatus['TRACKING_SENT'] == ExperimentStatus.TRACKING_SENT assert ExperimentStatus['TRACKING_SEND_ERROR'] == ExperimentStatus.TRACKING_SEND_ERROR assert ExperimentStatus['FILE_DELETED'] == ExperimentStatus.FILE_DELETED assert ExperimentStatus['FILE_DELETE_ERROR'] == ExperimentStatus.FILE_DELETE_ERROR def test_experiment_status_access_by_value(): """Test accessing enum members by value.""" assert ( ExperimentStatus('ORCHESTRATOR_WAITING_PROC') == ExperimentStatus.ORCHESTRATOR_WAITING_PROC ) assert ExperimentStatus('TRAINING_SUCCESS') == ExperimentStatus.TRAINING_SUCCESS assert ExperimentStatus('TRAINING_ERROR') == ExperimentStatus.TRAINING_ERROR assert ExperimentStatus('TRACKING_SENT') == ExperimentStatus.TRACKING_SENT assert ExperimentStatus('TRACKING_SEND_ERROR') == ExperimentStatus.TRACKING_SEND_ERROR assert ExperimentStatus('FILE_DELETED') == ExperimentStatus.FILE_DELETED assert ExperimentStatus('FILE_DELETE_ERROR') == ExperimentStatus.FILE_DELETE_ERROR