use toml::Value;
pub fn not_empty(input: &str, value: &Value) -> Result<(), String> {
if let Some(required) = value.as_bool() {
if required && input.trim().is_empty() {
return Err("Input cannot be empty".to_string());
}
} else {
if input.trim().is_empty() {
return Err("Input cannot be empty".to_string());
}
}
Ok(())
}
#[cfg(test)]
mod tests {
use super::*;
use toml::Value;
#[test]
fn test_not_empty_valid() {
assert!(not_empty("some value", &Value::Boolean(true)).is_ok());
assert!(not_empty("", &Value::Boolean(false)).is_ok());
}
#[test]
fn test_not_empty_invalid() {
let result = not_empty("", &Value::Boolean(true));
assert!(result.is_err());
assert!(result.unwrap_err().contains("cannot be empty"));
let result = not_empty("", &Value::String("yes".to_string()));
assert!(result.is_err());
}
}