#[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", "21924201552023106304243115818535", ];
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", "219242 01 55 2023 1 06304 243 1158185-35", "219242 01552023106304243115818536", "21924201 552023106304243115818536", "2192420155 2023106304243115818536", "21924201552023 106304243115818536", "219242015520231 06304243115818536", "21924201552023106304 243115818536", "21924201552023106304243 115818536", "219242015520231063042431158185-36", "2192420155202310630424311581853", "219242015520231063042431158185365", ];
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", "219242 01 55 2023 1 06304 243 1158185-35", ];
for document in documents {
assert_eq!(brado::certidao::is_masked(document), true);
}
}
#[test]
fn certidao_is_masked_2_invalid_masked() {
let documents = [
"21924201552023106304243115818536", "21924201552023106304243115818535", "219242 01552023106304243115818536", "21924201 552023106304243115818536", "2192420155 2023106304243115818536", "21924201552023 106304243115818536", "219242015520231 06304243115818536", "21924201552023106304 243115818536", "21924201552023106304243 115818536", "219242015520231063042431158185-36", "2192420155202310630424311581853", "219242015520231063042431158185365", "219242 01 55 2023 1 06304 243 1158185-3", "219242 01 55 2023 1 06304 243 1158185-365", "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", ];
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", "219242 01 55 2023 1 06304 243 1158185-35", "2192420155202310630424311581853", "219242015520231063042431158185365", ];
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);
}
}
}