summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKyohei Uto <im@kyoheiu.dev>2024-04-06 16:46:38 +0900
committerKyohei Uto <im@kyoheiu.dev>2024-04-06 16:46:38 +0900
commit53035558b1b61aef2224ebb475882332f1107976 (patch)
tree31f79475fb21be5f54dae57017cb9446cabd20de
parentc1d1cf1931f18cf9885ea8002bb0ec3feac4ae90 (diff)
Add config testfeature/add-test
-rw-r--r--src/config.rs72
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);
+ }
+}