1use self::{
2 athena::Athena,
3 checker_result::CheckResult,
4 checker_type::{Check, Checker},
5 english::EnglishChecker,
6 lemmeknow_checker::LemmeKnow,
7 regex_checker::RegexChecker,
8};
9
10pub mod athena;
12pub mod checker_result;
14pub mod checker_type;
16pub mod default_checker;
18pub mod english;
20pub mod human_checker;
22pub mod lemmeknow_checker;
24pub mod regex_checker;
26
27pub enum CheckerTypes {
29 CheckLemmeKnow(Checker<LemmeKnow>),
31 CheckEnglish(Checker<EnglishChecker>),
33 CheckAthena(Checker<Athena>),
35 CheckRegex(Checker<RegexChecker>),
37}
38
39impl CheckerTypes {
40 pub fn check(&self, text: &str) -> CheckResult {
42 match self {
43 CheckerTypes::CheckLemmeKnow(lemmeknow_checker) => lemmeknow_checker.check(text),
44 CheckerTypes::CheckEnglish(english_checker) => english_checker.check(text),
45 CheckerTypes::CheckAthena(athena_checker) => athena_checker.check(text),
46 CheckerTypes::CheckRegex(regex_checker) => regex_checker.check(text),
47 }
48 }
49}
50
51#[cfg(test)]
53mod tests {
54 use crate::checkers::{
55 athena::Athena,
56 checker_type::{Check, Checker},
57 CheckerTypes,
58 };
59
60 #[test]
61 fn test_check_ip_address() {
62 let athena = CheckerTypes::CheckAthena(Checker::<Athena>::new());
63 assert!(athena.check("192.168.0.1").is_identified);
64 }
65
66 #[test]
67 fn test_check_goes_to_dictionary() {
68 let athena = CheckerTypes::CheckAthena(Checker::<Athena>::new());
69 assert!(athena.check("and").is_identified);
70 }
71}