summaryrefslogtreecommitdiff
path: root/src/tests
diff options
context:
space:
mode:
authorpommicket <pommicket@gmail.com>2025-09-09 14:32:21 -0400
committerpommicket <pommicket@gmail.com>2025-09-09 14:32:21 -0400
commitb52a9d0b6a2c15b1bebbd5ffa5481fdf25148556 (patch)
tree68184649419570f4c1def1bbce80a2bcc52f7930 /src/tests
parent8d2b61549d4c5924345e93130b50499b35db9ccb (diff)
Add list parsing test, fix list parsing
Diffstat (limited to 'src/tests')
-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>(