socrates_rs 1.1.0

Validate and Extract information from National Identification Numbers.
Documentation
use socrates_rs;
use socrates_rs::Citizen;

#[test]
fn validate_id_portugal_valid_test() {
    assert!(socrates_rs::validate_id(
        "14349483 0 ZV3",
        socrates_rs::country::Code::PT
    ));
}

#[test]
fn validate_id_portugal_invalid_test() {
    assert!(!socrates_rs::validate_id(
        "11234455677890",
        socrates_rs::country::Code::PT
    ));
}

#[test]
fn validate_id_france_valid_test() {
    assert!(socrates_rs::validate_id(
        "2820819398814 09",
        socrates_rs::country::Code::FR
    ));
}

#[test]
fn validate_id_france_invalid_test() {
    assert!(!socrates_rs::validate_id(
        "123X123X123dDAS",
        socrates_rs::country::Code::FR
    ));
}

#[test]
fn extract_france_test() {
    let citizen =
        socrates_rs::extract_information("2820819398814 09", socrates_rs::country::Code::FR)
            .unwrap();
    assert_eq!(citizen.gender, 'F');
    assert_eq!(citizen.year_of_birth, 1982);
    assert_eq!(citizen.month_of_birth.unwrap(), 8);
    assert_eq!(citizen.place_of_birth.unwrap(), "Corrèze");
}

#[test]
fn generator_denmark() {
    let id = socrates_rs::generate_id(
        &Citizen {
            gender: 'M',
            year_of_birth: 1991,
            month_of_birth: Some(6),
            day_of_birth: Some(16),
            place_of_birth: None,
        },
        socrates_rs::country::Code::DK,
    )
    .unwrap();
    assert_eq!(id, "160691-3113");
}