country_code/iso3166_2/
us.rs

1//! [ISO 3166-2:US](https://en.wikipedia.org/wiki/ISO_3166-2:US)
2
3use crate::iso3166_1::alpha_2::CountryCode;
4
5//
6country_subdivision_code! {
7    CountryCode, CountryCode::US;
8
9    #[derive(Debug, Clone)]
10    pub enum CountrySubdivisionCode {
11        AL,
12        AK,
13        AZ,
14        AR,
15        CA,
16        CO,
17        CT,
18        DE,
19        FL,
20        GA,
21        HI,
22        ID,
23        IL,
24        IN,
25        IA,
26        KS,
27        KY,
28        LA,
29        ME,
30        MD,
31        MA,
32        MI,
33        MN,
34        MS,
35        MO,
36        MT,
37        NE,
38        NV,
39        NH,
40        NJ,
41        NM,
42        NY,
43        NC,
44        ND,
45        OH,
46        OK,
47        OR,
48        PA,
49        RI,
50        SC,
51        SD,
52        TN,
53        TX,
54        UT,
55        VT,
56        VA,
57        WA,
58        WV,
59        WI,
60        WY,
61        DC,
62        AS,
63        GU,
64        MP,
65        PR,
66        UM,
67        VI,
68    }
69}
70
71#[cfg(test)]
72mod tests {
73    use super::*;
74
75    use alloc::string::ToString as _;
76
77    use csv::Reader;
78
79    #[test]
80    fn test_country_subdivision_code() {
81        // Wikipedia
82        let mut rdr = Reader::from_reader(include_str!("../../tests/ISO_3166-2/US.csv").as_bytes());
83
84        let mut n = 0;
85        for record in rdr.records() {
86            let record = record.unwrap();
87            let code = &record[0];
88            assert_eq!(
89                code.parse::<CountrySubdivisionCode>().unwrap().to_string(),
90                code
91            );
92            n += 1;
93        }
94
95        assert_eq!(CountrySubdivisionCode::COUNTRY_CODE, CountryCode::US);
96
97        assert_eq!(CountrySubdivisionCode::VARS.len(), n);
98    }
99}