brado 1.1.0

brado is a brazilian docs validator
Documentation
#[cfg(test)]
mod certidao_tests {
    use brado;

    #[test]
    fn certidao_validate_1_valid_certidaos() {
        let valid_certidaos = [
            "21924201552023106304243115818536",
            "219242 01 55 2023 1 06304 243 1158185-36",
        ];
        for valid_certidao in valid_certidaos {
            assert_eq!(brado::certidao::validate(valid_certidao), true);
        }
    }

    #[test]
    fn certidao_validate_2_invalid_certidaos() {
        let invalid_certidaos = [
            "2192420155202310630424311581853",
            "21924201552023106304243115818535",
            "219242015520231063042431158185365",
            "219242 01 55 2023 1 06304 243 1158185-3",
            "219242 01 55 2023 1 06304 243 1158185-35",
            "219242 01 55 2023 1 06304 243 1158185-365",
            "219242 01552023106304243115818536",
            "21924201 552023106304243115818536",
            "2192420155 2023106304243115818536",
            "21924201552023 106304243115818536",
            "219242015520231 06304243115818536",
            "21924201552023106304 243115818536",
            "21924201552023106304243 115818536",
            "219242015520231063042431158185-36",
            "21924 20 15 5202 3 10630 424 3115818-536",
            "2192420 15 52 0231 0 63042 431 1581853-6",
            "219242:01 55 2023 1 06304 243 1158185-36",
            "219242 01:55 2023 1 06304 243 1158185-36",
            "219242 01 55:2023 1 06304 243 1158185-36",
            "219242 01 55 2023:1 06304 243 1158185-36",
            "219242 01 55 2023 1:06304 243 1158185-36",
            "219242 01 55 2023 1 06304:243 1158185-36",
            "219242 01 55 2023 1 06304 243:1158185-36",
            "219242 01 55 2023 1 06304 243 1158185:36",
            "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
            "AAAAAA AA AA AAAA A AAAAA AAA AAAAAAA-AA",
        ];
        for invalid_certidao in invalid_certidaos {
            assert_eq!(brado::certidao::validate(invalid_certidao), false);
        }
    }

    #[test]
    fn certidao_is_bare_1_valid_bare() {
        let documents = [
            "21924201552023106304243115818536", // Valid Certidão
            "21924201552023106304243115818535", // Invalid Certidão
        ];
        for document in documents {
            assert_eq!(brado::certidao::is_bare(document), true);
        }
    }

    #[test]
    fn certidao_is_bare_2_invalid_bare() {
        let documents = [
            "219242 01 55 2023 1 06304 243 1158185-36", // Valid Certidão
            "219242 01 55 2023 1 06304 243 1158185-35", // Invalid Certidão
            "219242 01552023106304243115818536",        // Invalid Certidão
            "21924201 552023106304243115818536",        // Invalid Certidão
            "2192420155 2023106304243115818536",        // Invalid Certidão
            "21924201552023 106304243115818536",        // Invalid Certidão
            "219242015520231 06304243115818536",        // Invalid Certidão
            "21924201552023106304 243115818536",        // Invalid Certidão
            "21924201552023106304243 115818536",        // Invalid Certidão
            "219242015520231063042431158185-36",        // Invalid Certidão
            "2192420155202310630424311581853",          // Invalid Certidão
            "219242015520231063042431158185365",        // Invalid Certidão
        ];
        for document in documents {
            assert_eq!(brado::certidao::is_bare(document), false);
        }
    }

    #[test]
    fn certidao_is_masked_1_valid_masked() {
        let documents = [
            "219242 01 55 2023 1 06304 243 1158185-36", // Valid Certidão
            "219242 01 55 2023 1 06304 243 1158185-35", // Invalid Certidão
        ];
        for document in documents {
            assert_eq!(brado::certidao::is_masked(document), true);
        }
    }

    #[test]
    fn certidao_is_masked_2_invalid_masked() {
        let documents = [
            "21924201552023106304243115818536", // Valid Certidão
            "21924201552023106304243115818535", // Invalid Certidão
            "219242 01552023106304243115818536", // Invalid Certidão
            "21924201 552023106304243115818536", // Invalid Certidão
            "2192420155 2023106304243115818536", // Invalid Certidão
            "21924201552023 106304243115818536", // Invalid Certidão
            "219242015520231 06304243115818536", // Invalid Certidão
            "21924201552023106304 243115818536", // Invalid Certidão
            "21924201552023106304243 115818536", // Invalid Certidão
            "219242015520231063042431158185-36", // Invalid Certidão
            "2192420155202310630424311581853",  // Invalid Certidão
            "219242015520231063042431158185365", // Invalid Certidão
            "219242 01 55 2023 1 06304 243 1158185-3", // Invalid Certidão
            "219242 01 55 2023 1 06304 243 1158185-365", // Invalid Certidão
            "219242:01 55 2023 1 06304 243 1158185-36", // Invalid Certidão
            "219242 01:55 2023 1 06304 243 1158185-36", // Invalid Certidão
            "219242 01 55:2023 1 06304 243 1158185-36", // Invalid Certidão
            "219242 01 55 2023:1 06304 243 1158185-36", // Invalid Certidão
            "219242 01 55 2023 1:06304 243 1158185-36", // Invalid Certidão
            "219242 01 55 2023 1 06304:243 1158185-36", // Invalid Certidão
            "219242 01 55 2023 1 06304 243:1158185-36", // Invalid Certidão
            "219242 01 55 2023 1 06304 243 1158185:36", // Invalid Certidão
        ];
        for document in documents {
            assert_eq!(brado::certidao::is_masked(document), false);
        }
    }

    #[test]
    fn certidao_mask_1_valid_mask() {
        let valid_certidao: &str = "21924201552023106304243115818536";
        assert_eq!(
            brado::certidao::mask(valid_certidao),
            Ok(String::from("219242 01 55 2023 1 06304 243 1158185-36"))
        );
        let invalid_certidao: &str = "21924201552023106304243115818535";
        assert_eq!(
            brado::certidao::mask(invalid_certidao),
            Ok(String::from("219242 01 55 2023 1 06304 243 1158185-35"))
        );
    }

    #[test]
    fn certidao_mask_2_invalid_mask() {
        let documents = [
            "219242 01 55 2023 1 06304 243 1158185-36", // Valid Certidão
            "219242 01 55 2023 1 06304 243 1158185-35", // Invalid Certidão
            "2192420155202310630424311581853",          // Invalid Certidão
            "219242015520231063042431158185365",        // Invalid Certidão
        ];
        for document in documents {
            let result = brado::certidao::mask(document);
            assert_eq!(
                result,
                Err("The given string cannot be masked as Certidão!"),
            );
        }
    }

    #[test]
    fn certidao_generate_1() {
        for _ in 0..1000 {
            let certidao = brado::certidao::generate();
            assert_eq!(brado::certidao::validate(&certidao), true);
            assert_eq!(brado::certidao::is_bare(&certidao), true);
        }
    }

    #[test]
    fn certidao_generate_masked_1() {
        for _ in 0..1000 {
            let certidao = brado::certidao::generate_masked();
            assert_eq!(brado::certidao::validate(&certidao), true);
            assert_eq!(brado::certidao::is_masked(&certidao), true);
        }
    }
}