diff options
Diffstat (limited to 'src/tests/interpretation.rs')
-rw-r--r-- | src/tests/interpretation.rs | 24 |
1 files changed, 22 insertions, 2 deletions
diff --git a/src/tests/interpretation.rs b/src/tests/interpretation.rs index 64106af..c5ca109 100644 --- a/src/tests/interpretation.rs +++ b/src/tests/interpretation.rs @@ -2,8 +2,28 @@ use crate::Configuration; use std::error::Error; use std::fmt::Display; -fn do_list_test(_cfg: &Configuration) -> Result<(), Box<dyn Error>> { - todo!() +fn do_list_test(cfg: &Configuration) -> Result<(), Box<dyn Error>> { + for key in cfg.keys() { + let list = cfg + .get_list(&format!("{key}.list")) + .ok_or_else(|| format!("expected {key}.list to exist"))?; + let sep = cfg + .get(&format!("{key}.sep")) + .ok_or_else(|| format!("expected {key}.sep to exist"))?; + let sep: Vec<&str> = if let Some(sep) = sep.strip_suffix(';') { + sep.split(';').collect() + } else if sep.is_empty() { + vec![] + } else { + return Err(format!("expected {key}.sep value to end in semicolon: {sep:?}").into()); + }; + if sep != list { + Err(format!( + "list {key}.list parsed incorrectly: got {list:?}, expected {sep:?}" + ))?; + } + } + Ok(()) } fn do_goodbad_test<I: PartialEq + Display>( |