From b52a9d0b6a2c15b1bebbd5ffa5481fdf25148556 Mon Sep 17 00:00:00 2001 From: pommicket Date: Tue, 9 Sep 2025 14:32:21 -0400 Subject: Add list parsing test, fix list parsing --- src/tests/interpretation.rs | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) (limited to 'src/tests/interpretation.rs') 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> { - todo!() +fn do_list_test(cfg: &Configuration) -> Result<(), Box> { + 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( -- cgit v1.2.3