validator_async/validation/
does_not_contain.rs1use 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}