Skip to main content

entrenar/optim/hpo/
error.rs

1//! HPO error types
2
3use thiserror::Error;
4
5/// HPO errors
6#[derive(Debug, Error)]
7pub enum HPOError {
8    #[error("Empty search space")]
9    EmptySpace,
10
11    #[error("Parameter not found: {0}")]
12    ParameterNotFound(String),
13
14    #[error("Invalid parameter value for {0}: {1}")]
15    InvalidValue(String, String),
16
17    #[error("No trials completed")]
18    NoTrials,
19
20    #[error("HPO error: {0}")]
21    Internal(String),
22}
23
24/// Result type for HPO operations
25pub type Result<T> = std::result::Result<T, HPOError>;
26
27#[cfg(test)]
28mod tests {
29    use super::*;
30
31    #[test]
32    fn test_hpo_error_display() {
33        let err = HPOError::EmptySpace;
34        assert!(format!("{err}").contains("Empty search space"));
35
36        let err = HPOError::ParameterNotFound("lr".to_string());
37        assert!(format!("{err}").contains("Parameter not found"));
38        assert!(format!("{err}").contains("lr"));
39
40        let err = HPOError::InvalidValue("lr".to_string(), "invalid".to_string());
41        assert!(format!("{err}").contains("Invalid parameter value"));
42
43        let err = HPOError::NoTrials;
44        assert!(format!("{err}").contains("No trials completed"));
45
46        let err = HPOError::Internal("test error".to_string());
47        assert!(format!("{err}").contains("HPO error"));
48    }
49}