diff options
Diffstat (limited to 'tests/log.rs')
-rw-r--r-- | tests/log.rs | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/tests/log.rs b/tests/log.rs new file mode 100644 index 0000000..a468ada --- /dev/null +++ b/tests/log.rs @@ -0,0 +1,56 @@ +extern crate config; +extern crate log; + +#[macro_use] +extern crate serde_derive; +extern crate serde_json; + +use config::*; + +#[derive(Debug, Deserialize)] +struct Settings { + log: log::Level, +} + +fn config(s: &str) -> Config { + Config::builder() + .add_source(File::from_str(s, FileFormat::Json)) + .build() + .unwrap() +} + +#[test] +fn test_load_level_uppercase() { + let s = r#"{ "log": "ERROR" }"#; + let c = config(s); + let l = c.get::<log::Level>("log").unwrap(); + assert_eq!(l, log::Level::Error); +} + +#[test] +fn test_case_sensitivity_log_level_from_str() { + // to verify that this works + + use std::str::FromStr; + let l = log::Level::from_str("error").unwrap(); + assert_eq!(l, log::Level::Error); +} + +#[test] +fn test_case_sensitivity_json_from_str() { + // to confirm serde_json works as expected + let s = r#"{ "log": "error" }"#; + + let j: Settings = serde_json::from_str(s).unwrap(); + assert_eq!(j.log, log::Level::Error); +} + +#[test] +fn test_load_level_lowercase_succeeding() { + let s = r#"{ "log": "error" }"#; + let c = config(s); + assert_eq!(c.get_string("log").unwrap(), "error"); + let s = c.try_deserialize::<Settings>(); + assert!(s.is_ok(), "Expected Ok(_) for {:?}", s); + assert_eq!(s.unwrap().log, log::Level::Error); +} |