"""Unit tests for custom exceptions with 100% coverage.""" import pytest def test_model_training_error_with_default_message(): """Test ModelTrainingError with default message.""" from model_manager.utils.exceptions import ModelTrainingError error = ModelTrainingError(model_trained=True, model_saved=False) assert error.model_trained is True assert error.model_saved is False assert str(error) == 'Model training workflow failed (model_trained=True, model_saved=False)' def test_model_training_error_with_custom_message(): """Test ModelTrainingError with custom message.""" from model_manager.utils.exceptions import ModelTrainingError custom_msg = 'Custom error occurred during training' error = ModelTrainingError(model_trained=False, model_saved=False, message=custom_msg) assert error.model_trained is False assert error.model_saved is False assert str(error) == custom_msg def test_model_training_error_both_true(): """Test ModelTrainingError when both flags are True.""" from model_manager.utils.exceptions import ModelTrainingError error = ModelTrainingError(model_trained=True, model_saved=True) assert error.model_trained is True assert error.model_saved is True assert str(error) == 'Model training workflow failed (model_trained=True, model_saved=True)' def test_model_training_error_both_false(): """Test ModelTrainingError when both flags are False.""" from model_manager.utils.exceptions import ModelTrainingError error = ModelTrainingError(model_trained=False, model_saved=False) assert error.model_trained is False assert error.model_saved is False assert str(error) == 'Model training workflow failed (model_trained=False, model_saved=False)' def test_model_training_error_is_exception(): """Test ModelTrainingError is an Exception subclass.""" from model_manager.utils.exceptions import ModelTrainingError error = ModelTrainingError(model_trained=True, model_saved=False) assert isinstance(error, Exception) def test_model_training_error_can_be_raised(): """Test ModelTrainingError can be raised and caught.""" from model_manager.utils.exceptions import ModelTrainingError with pytest.raises(ModelTrainingError) as exc_info: raise ModelTrainingError(model_trained=True, model_saved=False) assert exc_info.value.model_trained is True assert exc_info.value.model_saved is False def test_model_training_error_with_empty_message(): """Test ModelTrainingError with empty string message.""" from model_manager.utils.exceptions import ModelTrainingError error = ModelTrainingError(model_trained=True, model_saved=True, message='') assert error.model_trained is True assert error.model_saved is True assert str(error) == ''