use cinv::*;
use std::collections::HashMap;
#[test]
fn test_valid_default_mode() {
assert!(is_valid("11010519491231002X"));
}
#[test]
fn test_exact6_mode() {
assert!(is_valid_with_mode("330106199003071236", AddressMatchMode::Exact6));
assert!(!is_valid_with_mode("330109199003071239", AddressMatchMode::Exact6));
}
#[test]
fn test_fallback64_mode() {
assert!(is_valid_with_mode("330109199003071235", AddressMatchMode::Fallback64));
}
#[test]
fn test_with_external_map() {
let mut custom = HashMap::new();
custom.insert("330106", "浙江省杭州市西湖区");
assert!(is_valid_with_map("330106199003071236", &custom));
assert!(is_valid_with_map_and_mode(
"330106199003071236",
&custom,
AddressMatchMode::Exact6,
));
assert!(!is_valid_with_map_and_mode(
"330109199003071239",
&custom,
AddressMatchMode::Exact6,
));
assert!(!is_valid_with_map_and_mode(
"330109199003071239",
&custom,
AddressMatchMode::Fallback64,
));
}
#[test]
fn test_invalid_examples() {
assert!(!is_valid("110105194912310021")); assert!(!is_valid("11010519491331002X")); assert!(!is_valid("11010519490229002X")); assert!(!is_valid("01010519491231002X")); assert!(!is_valid("")); }
#[test]
fn test_generate_valid_id() {
let id = generate_test_id_with_address_code("330109", "19900307", "123");
assert_eq!(id, Some("330109199003071235".into()));
assert!(is_valid(id.as_ref().unwrap()));
let id2 = generate_test_id_with_address_code("330109", "19900307", "001");
assert_eq!(id2, Some("330109199003070013".into()));
assert!(is_valid(id2.as_ref().unwrap()));
let id = generate_test_id_with_address_code("330109", "19900307", "123");
assert!(id.is_some());
let id_str = id.unwrap(); dbg!(&id_str);
assert!(is_valid(&id_str));
}
#[test]
fn test_generate_id_with_invalid_input() {
let id = generate_test_id_with_address_code("33010A", "19900307", "123");
assert!(id.is_none());
let id = generate_test_id_with_address_code("3301", "19900307", "123");
assert!(id.is_none());
}
#[test]
fn test_fallback64_mode_with_generated_id() {
let id = generate_test_id_with_address_code("330109", "19900307", "123").unwrap();
assert!(is_valid_with_mode(&id, AddressMatchMode::Fallback64));
}
#[test]
fn test_exact6_mode_with_generated_id() {
let id = generate_test_id_with_address_code("330106", "19900307", "123").unwrap();
assert!(is_valid_with_mode(&id, AddressMatchMode::Exact6));
let id2 = generate_test_id_with_address_code("330115", "19900307", "123").unwrap();
assert!(!is_valid_with_mode(&id2, AddressMatchMode::Exact6));
}