warlocks_cauldron/providers/spec/
nl.rs

1use super::super::dependencies::*;
2
3
4/// Methods collection provides special data for Netherlands (nl)
5pub struct NetherlandsSpecProvider;
6
7impl NetherlandsSpecProvider {
8    fn is_valid_bsn(number: u32) -> bool {
9        let mut total: i32 = 0;
10        let mut multiplier: i32 = 9;
11
12        for char in number.to_string().chars() {
13            multiplier = match multiplier {
14                1 => -multiplier,
15                other => other,
16            };
17
18            total += char.to_digit(10).unwrap() as i32 * multiplier;
19            multiplier -= 1;
20        }
21
22        return total % 11 == 0
23    }
24
25    /// Generate a random, but valid ``Burgerservicenummer``
26    pub fn bsn() -> u32 {
27        let (a, b) = (100000000, 999999999);
28
29        loop {
30            let sample = randint(a, b);
31            if Self::is_valid_bsn(sample) {
32                return sample;
33            }
34        }
35    }
36
37    /// Generate a random, but valid ``Burgerservicenummer`` | *An allias for .bsn()* 
38    pub fn burgerservicenummer() -> u32 {
39        Self::bsn()
40    }
41}