diff options
author | Kyohei Uto <im@kyoheiu.dev> | 2024-04-06 16:46:38 +0900 |
---|---|---|
committer | Kyohei Uto <im@kyoheiu.dev> | 2024-04-06 16:46:38 +0900 |
commit | 53035558b1b61aef2224ebb475882332f1107976 (patch) | |
tree | 31f79475fb21be5f54dae57017cb9446cabd20de | |
parent | c1d1cf1931f18cf9885ea8002bb0ec3feac4ae90 (diff) |
Add config testfeature/add-test
-rw-r--r-- | src/config.rs | 72 |
1 files changed, 70 insertions, 2 deletions
diff --git a/src/config.rs b/src/config.rs index 9ad2918..75a1d14 100644 --- a/src/config.rs +++ b/src/config.rs @@ -24,7 +24,7 @@ pub struct Config { pub color: Option<ConfigColor>, } -#[derive(Deserialize, Debug, Clone)] +#[derive(Deserialize, Debug, Clone, PartialEq)] pub struct ConfigColor { pub dir_fg: Colorname, pub file_fg: Colorname, @@ -43,7 +43,7 @@ impl Default for ConfigColor { } } -#[derive(Deserialize, Debug, Clone)] +#[derive(Deserialize, Debug, Clone, PartialEq)] pub enum Colorname { Black, // 0 Red, // 1 @@ -143,3 +143,71 @@ pub fn read_config_or_default() -> Result<ConfigWithPath, FxError> { }) } } + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn test_read_default_config() { + let default_config: Config = serde_yaml::from_str("").unwrap(); + assert_eq!(default_config.default, None); + assert_eq!(default_config.match_vim_exit_behavior, None); + assert_eq!(default_config.exec, None); + assert_eq!(default_config.ignore_case, None); + assert_eq!(default_config.color, None); + } + + #[test] + fn test_read_full_config() { + let full_config: Config = serde_yaml::from_str( + r#" +default: nvim +match_vim_exit_behavior: true +exec: + zathura: + [pdf] + 'feh -.': + [jpg, jpeg, png, gif, svg, hdr] +ignore_case: true +color: + dir_fg: LightCyan + file_fg: LightWhite + symlink_fg: LightYellow + dirty_fg: Red +"#, + ) + .unwrap(); + assert_eq!(full_config.default, Some("nvim".to_string())); + assert_eq!(full_config.match_vim_exit_behavior, Some(true)); + assert_eq!( + full_config.exec.clone().unwrap().get("zathura"), + Some(&vec!["pdf".to_string()]) + ); + assert_eq!( + full_config.exec.unwrap().get("feh -."), + Some(&vec![ + "jpg".to_string(), + "jpeg".to_string(), + "png".to_string(), + "gif".to_string(), + "svg".to_string(), + "hdr".to_string() + ]) + ); + assert_eq!(full_config.ignore_case, Some(true)); + assert_eq!( + full_config.color.clone().unwrap().dir_fg, + Colorname::LightCyan + ); + assert_eq!( + full_config.color.clone().unwrap().file_fg, + Colorname::LightWhite + ); + assert_eq!( + full_config.color.clone().unwrap().symlink_fg, + Colorname::LightYellow + ); + assert_eq!(full_config.color.unwrap().dirty_fg, Colorname::Red); + } +} |