#[cfg(test)] mod unit_tests { const EXAMPLE_TOML: &str = include_str!("../example/example.toml"); fn keys_to_vec(keys: &[&str]) -> Vec { keys.iter().map(std::string::ToString::to_string).collect() } #[test] fn simple() { let evaluation_string = tigerturtle::process_toml( EXAMPLE_TOML, keys_to_vec(&[ "eggs", "bar", "numbers__sixty_nine", "numbers__four_twenty", "numbers__pi", ]), "toml__", "_", "__", ) .expect("process"); println!("output:\n{evaluation_string}"); let evaluation_strings = evaluation_string.split('\n').collect::>(); for s in [ "toml__eggs=\"spam\"", "toml__bar=\"baz\"", "toml__numbers__sixty_nine=69", "toml__numbers__four_twenty=420", "toml__numbers__pi=3.1415", ] { println!("checking: {s}"); assert!(evaluation_strings.contains(&s)); } } #[test] fn nested() { let evaluation_string = tigerturtle::process_toml( EXAMPLE_TOML, keys_to_vec(&[ "eggs", "bar", "numbersABCDEFGsixty_nine", "numbersABCDEFGfour_twenty", "numbersABCDEFGpi", ]), "toml__", "_", "ABCDEFG", ) .expect("process"); println!("output:\n{evaluation_string}"); let evaluation_strings = evaluation_string.split('\n').collect::>(); for s in [ "toml__eggs=\"spam\"", "toml__bar=\"baz\"", "toml__numbersABCDEFGsixty_nine=69", "toml__numbersABCDEFGfour_twenty=420", "toml__numbersABCDEFGpi=3.1415", ] { println!("checking: {s}"); assert!(evaluation_strings.contains(&s)); } } #[test] fn required_fail() { let evaluation_string = tigerturtle::process_toml(EXAMPLE_TOML, keys_to_vec(&["_foo"]), "toml__", "_", "__"); assert!(evaluation_string.is_err()); } #[test] fn required_prefix_fail() { let evaluation_string = tigerturtle::process_toml(EXAMPLE_TOML, keys_to_vec(&["=foo"]), "toml__", "=", "__"); assert!(evaluation_string.is_err()); } #[test] fn required_prefix() { let evaluation_string = tigerturtle::process_toml(EXAMPLE_TOML, keys_to_vec(&["=eggs"]), "toml__", "=", "__") .expect("process"); println!("output:\n{evaluation_string}"); let evaluation_strings = evaluation_string.split('\n').collect::>(); assert!(evaluation_strings.contains(&"toml__eggs=\"spam\"")); } #[test] fn output_prefix() { let evaluation_string = tigerturtle::process_toml( EXAMPLE_TOML, keys_to_vec(&[ "eggs", "bar", "numbers__sixty_nine", "numbers__four_twenty", "numbers__pi", ]), "output__", "_", "__", ) .expect("process"); println!("output:\n{evaluation_string}"); let evaluation_strings = evaluation_string.split('\n').collect::>(); for s in [ "output__eggs=\"spam\"", "output__bar=\"baz\"", "output__numbers__sixty_nine=69", "output__numbers__four_twenty=420", "output__numbers__pi=3.1415", ] { println!("checking: {s}"); assert!(evaluation_strings.contains(&s)); } } #[test] fn output_prefix_empty() { let evaluation_string = tigerturtle::process_toml( EXAMPLE_TOML, keys_to_vec(&[ "eggs", "bar", "numbers__sixty_nine", "numbers__four_twenty", "numbers__pi", ]), "", "_", "__", ) .expect("process"); println!("output:\n{evaluation_string}"); let evaluation_strings = evaluation_string.split('\n').collect::>(); for s in [ "eggs=\"spam\"", "bar=\"baz\"", "numbers__sixty_nine=69", "numbers__four_twenty=420", "numbers__pi=3.1415", ] { println!("checking: {s}"); assert!(evaluation_strings.contains(&s)); } } }