Skip to main content

graphy_core/
error.rs

1use thiserror::Error;
2
3#[derive(Error, Debug)]
4pub enum GraphyError {
5    #[error("IO error: {0}")]
6    Io(#[from] std::io::Error),
7
8    #[error("Storage error: {0}")]
9    Storage(String),
10}
11
12#[cfg(test)]
13mod tests {
14    use super::*;
15
16    #[test]
17    fn io_error_display() {
18        let io_err = std::io::Error::new(std::io::ErrorKind::NotFound, "file not found");
19        let err: GraphyError = io_err.into();
20        let msg = format!("{}", err);
21        assert!(msg.contains("IO error"));
22        assert!(msg.contains("file not found"));
23    }
24
25    #[test]
26    fn storage_error_display() {
27        let err = GraphyError::Storage("corrupt database".to_string());
28        let msg = format!("{}", err);
29        assert!(msg.contains("Storage error"));
30        assert!(msg.contains("corrupt database"));
31    }
32
33    #[test]
34    fn io_error_from_conversion() {
35        let io_err = std::io::Error::new(std::io::ErrorKind::PermissionDenied, "access denied");
36        let err = GraphyError::from(io_err);
37        assert!(matches!(err, GraphyError::Io(_)));
38    }
39
40    #[test]
41    fn storage_error_empty_message() {
42        let err = GraphyError::Storage(String::new());
43        assert_eq!(format!("{}", err), "Storage error: ");
44    }
45}