ic_dbms_api/dbms/sanitize/
lowercase.rs

1use crate::prelude::{IcDbmsResult, Sanitize, Value};
2
3/// Sanitizer that converts strings to lowercase.
4///
5/// # Example
6///
7/// ```rust
8/// use ic_dbms_api::prelude::{LowerCaseSanitizer, Value, Sanitize as _};
9///
10/// let value = Value::Text("Hello, World!".into());
11/// let sanitizer = LowerCaseSanitizer;
12/// let sanitized_value = sanitizer.sanitize(value).unwrap();
13/// assert_eq!(sanitized_value, Value::Text("hello, world!".into()));
14/// ```
15pub struct LowerCaseSanitizer;
16
17impl Sanitize for LowerCaseSanitizer {
18    fn sanitize(&self, value: Value) -> IcDbmsResult<Value> {
19        match value {
20            Value::Text(text) => Ok(Value::Text(text.as_str().to_lowercase().into())),
21            other => Ok(other),
22        }
23    }
24}
25
26#[cfg(test)]
27mod tests {
28
29    use super::*;
30
31    #[test]
32    fn test_trim_sanitizer() {
33        let sanitizer = LowerCaseSanitizer;
34        let string = Value::Text("Hello, World!".into());
35        let number_value = Value::Int32(42.into());
36
37        let sanitized_lowercase = sanitizer.sanitize(string).unwrap();
38        let sanitized_number = sanitizer.sanitize(number_value).unwrap();
39
40        assert_eq!(sanitized_lowercase, Value::Text("hello, world!".into()));
41        assert_eq!(sanitized_number, Value::Int32(42.into()));
42    }
43}