validator_async/validation/
does_not_contain.rs

1use crate::ValidateContains;
2
3pub trait ValidateDoesNotContain {
4    fn validate_does_not_contain(&self, needle: &str) -> bool;
5}
6
7impl<T> ValidateDoesNotContain for T
8where
9    T: ValidateContains,
10{
11    fn validate_does_not_contain(&self, needle: &str) -> bool {
12        !self.validate_contains(needle)
13    }
14}
15
16#[cfg(test)]
17mod tests {
18    use std::borrow::Cow;
19    use std::collections::HashMap;
20
21    use super::*;
22
23    #[test]
24    fn test_validate_does_not_contain_string() {
25        assert!("hey".validate_does_not_contain("g"));
26    }
27
28    #[test]
29    fn test_validate_does_not_contain_string_can_fail() {
30        assert!(!"hey".validate_does_not_contain("e"));
31    }
32
33    #[test]
34    fn test_validate_does_not_contain_hashmap_key() {
35        let mut map = HashMap::new();
36        map.insert("hey".to_string(), 1);
37        assert!(map.validate_does_not_contain("bob"));
38    }
39
40    #[test]
41    fn test_validate_does_not_contain_hashmap_key_can_fail() {
42        let mut map = HashMap::new();
43        map.insert("hey".to_string(), 1);
44        assert!(!map.validate_does_not_contain("hey"));
45    }
46
47    #[test]
48    fn test_validate_does_not_contain_cow() {
49        let test: Cow<'static, str> = "hey".into();
50        assert!(test.validate_does_not_contain("b"));
51        let test: Cow<'static, str> = String::from("hey").into();
52        assert!(test.validate_does_not_contain("b"));
53    }
54
55    #[test]
56    fn test_validate_does_not_contain_cow_can_fail() {
57        let test: Cow<'static, str> = "hey".into();
58        assert!(!test.validate_does_not_contain("e"));
59        let test: Cow<'static, str> = String::from("hey").into();
60        assert!(!test.validate_does_not_contain("e"));
61    }
62}