diff --git a/src/config.rs b/src/config.rs index e56c844..c7b4324 100644 --- a/src/config.rs +++ b/src/config.rs @@ -694,3 +694,35 @@ impl Config { Ok(result) } } + +#[cfg(test)] +mod test { + + use super::*; + use std::collections::HashMap; + + #[test] + fn test_compatibility() { + let config = Config::default(); + assert!(config.is_compatible().unwrap()); + assert_eq!(config.upgrade_notification().unwrap(), None); + } + + #[test] + fn test_extend_hashmap() { + let mut a = HashMap::new(); + let mut b = HashMap::new(); + + a.insert("a", "a"); + a.insert("b", "a"); + + b.insert("b", "b"); + b.insert("c", "b"); + + a.extend(b); + + assert_eq!(a.get("a"), Some(&"a")); + assert_eq!(a.get("b"), Some(&"b")); + assert_eq!(a.get("c"), Some(&"b")); + } +} diff --git a/src/ui.rs b/src/ui.rs index a6efa28..a07c554 100644 --- a/src/ui.rs +++ b/src/ui.rs @@ -557,3 +557,153 @@ pub fn draw(f: &mut Frame, app: &app::App, hb: &Handlebars) { draw_selection(f, right_chunks[0], app, hb); draw_help_menu(f, right_chunks[1], app, hb); } + +#[cfg(test)] +mod test { + use super::*; + use crate::config; + use tui::style::Color; + use tui::style::Modifier; + + #[test] + fn test_extend_style() { + let a = Style { + fg: Some(Color::Red), + bg: None, + add_modifier: Some(Modifier::BOLD), + sub_modifier: None, + }; + + let b = Style { + fg: None, + bg: Some(Color::Blue), + add_modifier: None, + sub_modifier: Some(Modifier::DIM), + }; + + let c = Style { + fg: Some(Color::Cyan), + bg: Some(Color::Magenta), + add_modifier: Some(Modifier::CROSSED_OUT), + sub_modifier: Some(Modifier::ITALIC), + }; + + assert_eq!( + a.clone().extend(b.clone()), + Style { + fg: Some(Color::Red), + bg: Some(Color::Blue), + add_modifier: Some(Modifier::BOLD), + sub_modifier: Some(Modifier::DIM), + } + ); + + assert_eq!( + b.clone().extend(a.clone()), + Style { + fg: Some(Color::Red), + bg: Some(Color::Blue), + add_modifier: Some(Modifier::BOLD), + sub_modifier: Some(Modifier::DIM), + } + ); + + assert_eq!( + a.clone().extend(c.clone()), + Style { + fg: Some(Color::Cyan), + bg: Some(Color::Magenta), + add_modifier: Some(Modifier::CROSSED_OUT), + sub_modifier: Some(Modifier::ITALIC), + } + ); + + assert_eq!( + c.clone().extend(a.clone()), + Style { + fg: Some(Color::Red), + bg: Some(Color::Magenta), + add_modifier: Some(Modifier::BOLD), + sub_modifier: Some(Modifier::ITALIC), + } + ); + } + + #[test] + fn test_extend_ui_config() { + let a = config::UiConfig { + prefix: Some("a".to_string()), + suffix: None, + style: Style { + fg: Some(Color::Red), + bg: None, + add_modifier: Some(Modifier::BOLD), + sub_modifier: None, + }, + }; + + let b = config::UiConfig { + prefix: None, + suffix: Some("b".to_string()), + style: Style { + fg: None, + bg: Some(Color::Blue), + add_modifier: None, + sub_modifier: Some(Modifier::DIM), + }, + }; + + let c = config::UiConfig { + prefix: Some("cp".to_string()), + suffix: Some("cs".to_string()), + style: Style { + fg: Some(Color::Cyan), + bg: Some(Color::Magenta), + add_modifier: Some(Modifier::CROSSED_OUT), + sub_modifier: Some(Modifier::ITALIC), + }, + }; + + assert_eq!( + a.clone().extend(b.clone()), + config::UiConfig { + prefix: Some("a".to_string()), + suffix: Some("b".to_string()), + style: Style { + fg: Some(Color::Red), + bg: Some(Color::Blue), + add_modifier: Some(Modifier::BOLD), + sub_modifier: Some(Modifier::DIM), + }, + } + ); + + assert_eq!( + b.clone().extend(a.clone()), + config::UiConfig { + prefix: Some("a".to_string()), + suffix: Some("b".to_string()), + style: Style { + fg: Some(Color::Red), + bg: Some(Color::Blue), + add_modifier: Some(Modifier::BOLD), + sub_modifier: Some(Modifier::DIM), + }, + } + ); + + assert_eq!( + a.clone().extend(c.clone()), + config::UiConfig { + prefix: Some("cp".to_string()), + suffix: Some("cs".to_string()), + style: Style { + fg: Some(Color::Cyan), + bg: Some(Color::Magenta), + add_modifier: Some(Modifier::CROSSED_OUT), + sub_modifier: Some(Modifier::ITALIC), + }, + } + ); + } +} diff --git a/tests/mod.rs b/tests/mod.rs index 9841387..4f18d71 100644 --- a/tests/mod.rs +++ b/tests/mod.rs @@ -1,2 +1 @@ mod bdd; -mod unit; diff --git a/tests/unit/config.rs b/tests/unit/config.rs deleted file mode 100644 index 00ccbaf..0000000 --- a/tests/unit/config.rs +++ /dev/null @@ -1,107 +0,0 @@ -use std::collections::HashMap; -use tui::style::Color; -use tui::style::Modifier; -use xplr::*; - -#[test] -fn test_compatibility() { - let config = config::Config::default(); - assert!(config.is_compatible().unwrap()); - assert_eq!(config.upgrade_notification().unwrap(), None); -} - -#[test] -fn test_extend_hashmap() { - let mut a = HashMap::new(); - let mut b = HashMap::new(); - - a.insert("a", "a"); - a.insert("b", "a"); - - b.insert("b", "b"); - b.insert("c", "b"); - - a.extend(b); - - assert_eq!(a.get("a"), Some(&"a")); - assert_eq!(a.get("b"), Some(&"b")); - assert_eq!(a.get("c"), Some(&"b")); -} - -#[test] -fn test_extend_ui_config() { - let a = config::UiConfig { - prefix: Some("a".to_string()), - suffix: None, - style: ui::Style { - fg: Some(Color::Red), - bg: None, - add_modifier: Some(Modifier::BOLD), - sub_modifier: None, - }, - }; - - let b = config::UiConfig { - prefix: None, - suffix: Some("b".to_string()), - style: ui::Style { - fg: None, - bg: Some(Color::Blue), - add_modifier: None, - sub_modifier: Some(Modifier::DIM), - }, - }; - - let c = config::UiConfig { - prefix: Some("cp".to_string()), - suffix: Some("cs".to_string()), - style: ui::Style { - fg: Some(Color::Cyan), - bg: Some(Color::Magenta), - add_modifier: Some(Modifier::CROSSED_OUT), - sub_modifier: Some(Modifier::ITALIC), - }, - }; - - assert_eq!( - a.clone().extend(b.clone()), - config::UiConfig { - prefix: Some("a".to_string()), - suffix: Some("b".to_string()), - style: ui::Style { - fg: Some(Color::Red), - bg: Some(Color::Blue), - add_modifier: Some(Modifier::BOLD), - sub_modifier: Some(Modifier::DIM), - }, - } - ); - - assert_eq!( - b.clone().extend(a.clone()), - config::UiConfig { - prefix: Some("a".to_string()), - suffix: Some("b".to_string()), - style: ui::Style { - fg: Some(Color::Red), - bg: Some(Color::Blue), - add_modifier: Some(Modifier::BOLD), - sub_modifier: Some(Modifier::DIM), - }, - } - ); - - assert_eq!( - a.clone().extend(c.clone()), - config::UiConfig { - prefix: Some("cp".to_string()), - suffix: Some("cs".to_string()), - style: ui::Style { - fg: Some(Color::Cyan), - bg: Some(Color::Magenta), - add_modifier: Some(Modifier::CROSSED_OUT), - sub_modifier: Some(Modifier::ITALIC), - }, - } - ); -} diff --git a/tests/unit/mod.rs b/tests/unit/mod.rs deleted file mode 100644 index b9e069d..0000000 --- a/tests/unit/mod.rs +++ /dev/null @@ -1,2 +0,0 @@ -mod config; -mod ui; diff --git a/tests/unit/ui.rs b/tests/unit/ui.rs deleted file mode 100644 index b583d09..0000000 --- a/tests/unit/ui.rs +++ /dev/null @@ -1,67 +0,0 @@ -use tui::style::Color; -use tui::style::Modifier; -use xplr::*; - -#[test] -fn test_extend_style() { - let a = ui::Style { - fg: Some(Color::Red), - bg: None, - add_modifier: Some(Modifier::BOLD), - sub_modifier: None, - }; - - let b = ui::Style { - fg: None, - bg: Some(Color::Blue), - add_modifier: None, - sub_modifier: Some(Modifier::DIM), - }; - - let c = ui::Style { - fg: Some(Color::Cyan), - bg: Some(Color::Magenta), - add_modifier: Some(Modifier::CROSSED_OUT), - sub_modifier: Some(Modifier::ITALIC), - }; - - assert_eq!( - a.clone().extend(b.clone()), - ui::Style { - fg: Some(Color::Red), - bg: Some(Color::Blue), - add_modifier: Some(Modifier::BOLD), - sub_modifier: Some(Modifier::DIM), - } - ); - - assert_eq!( - b.clone().extend(a.clone()), - ui::Style { - fg: Some(Color::Red), - bg: Some(Color::Blue), - add_modifier: Some(Modifier::BOLD), - sub_modifier: Some(Modifier::DIM), - } - ); - - assert_eq!( - a.clone().extend(c.clone()), - ui::Style { - fg: Some(Color::Cyan), - bg: Some(Color::Magenta), - add_modifier: Some(Modifier::CROSSED_OUT), - sub_modifier: Some(Modifier::ITALIC), - } - ); - - assert_eq!( - c.clone().extend(a.clone()), - ui::Style { - fg: Some(Color::Red), - bg: Some(Color::Magenta), - add_modifier: Some(Modifier::BOLD), - sub_modifier: Some(Modifier::ITALIC), - } - ); -}