summaryrefslogtreecommitdiff
path: root/src/tests/interpretation.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/tests/interpretation.rs')
-rw-r--r--src/tests/interpretation.rs24
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>(