idsmith 0.5.4

Validate and generate checksum-correct IBANs, personal IDs, bank accounts, credit cards, SWIFT/BIC, company IDs, driver's licenses, tax IDs, and passports.
Documentation
use idsmith::swift::{GenOptions, Registry};
use rand::thread_rng;

#[test]
fn test_swift_generation() {
    let registry = Registry::new();
    let mut rng = thread_rng();
    let opts = GenOptions::default();

    for _ in 0..100 {
        let result = registry.generate(&opts, &mut rng);
        assert!(
            registry.validate(&result.code),
            "Failed to validate generated code: {}",
            result.code
        );
        assert!(result.valid);
    }
}

#[test]
fn test_specific_countries() {
    let registry = Registry::new();
    let mut rng = thread_rng();

    let countries = vec!["US", "GB", "DE", "FR"];

    for country in countries {
        let opts = GenOptions {
            country: Some(country.to_string()),
        };
        let result = registry.generate(&opts, &mut rng);
        assert_eq!(result.country, country);
        assert!(
            registry.validate(&result.code),
            "Failed to validate {}: {}",
            country,
            result.code
        );
    }
}