ares/checkers/
mod.rs

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
10/// The default checker we use which simply calls all other checkers in order.
11pub mod athena;
12/// The checkerResult struct is used to store the results of a checker.
13pub mod checker_result;
14/// This is the base checker that all other checkers inherit from.
15pub mod checker_type;
16/// The default checker we use which simply calls all other checkers in order.
17pub mod default_checker;
18/// The English Checker is a checker that checks if the input is English
19pub mod english;
20/// The Human Checker asks humans if the expected plaintext is real plaintext
21pub mod human_checker;
22/// The LemmeKnow Checker checks if the text matches a known Regex pattern.
23pub mod lemmeknow_checker;
24/// The Regex checker checks to see if the intended text matches the plaintext
25pub mod regex_checker;
26
27/// CheckerTypes is a wrapper enum for Checker
28pub enum CheckerTypes {
29    /// Wrapper for LemmeKnow Checker
30    CheckLemmeKnow(Checker<LemmeKnow>),
31    /// Wrapper for English Checker
32    CheckEnglish(Checker<EnglishChecker>),
33    /// Wrapper for Athena Checker
34    CheckAthena(Checker<Athena>),
35    /// Wrapper for Regex
36    CheckRegex(Checker<RegexChecker>),
37}
38
39impl CheckerTypes {
40    /// This functions calls appropriate check function of Checker
41    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// test
52#[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}