holodeck_simctl_core/models/
region_option.rs1#[derive(Debug, Clone, Copy, PartialEq, Eq)]
12pub struct RegionOption {
13 pub display_name: &'static str,
14 pub region_code: &'static str,
15}
16
17impl RegionOption {
18 pub const ALL: &'static [RegionOption] = &[
19 RegionOption { display_name: "United States", region_code: "US" },
20 RegionOption { display_name: "United Kingdom", region_code: "GB" },
21 RegionOption { display_name: "Canada", region_code: "CA" },
22 RegionOption { display_name: "Australia", region_code: "AU" },
23 RegionOption { display_name: "New Zealand", region_code: "NZ" },
24 RegionOption { display_name: "Ireland", region_code: "IE" },
25 RegionOption { display_name: "India", region_code: "IN" },
26 RegionOption { display_name: "Brazil", region_code: "BR" },
27 RegionOption { display_name: "Mexico", region_code: "MX" },
28 RegionOption { display_name: "Argentina", region_code: "AR" },
29 RegionOption { display_name: "Chile", region_code: "CL" },
30 RegionOption { display_name: "Colombia", region_code: "CO" },
31 RegionOption { display_name: "Portugal", region_code: "PT" },
32 RegionOption { display_name: "Spain", region_code: "ES" },
33 RegionOption { display_name: "France", region_code: "FR" },
34 RegionOption { display_name: "Germany", region_code: "DE" },
35 RegionOption { display_name: "Austria", region_code: "AT" },
36 RegionOption { display_name: "Switzerland", region_code: "CH" },
37 RegionOption { display_name: "Italy", region_code: "IT" },
38 RegionOption { display_name: "Netherlands", region_code: "NL" },
39 RegionOption { display_name: "Belgium", region_code: "BE" },
40 RegionOption { display_name: "Sweden", region_code: "SE" },
41 RegionOption { display_name: "Norway", region_code: "NO" },
42 RegionOption { display_name: "Denmark", region_code: "DK" },
43 RegionOption { display_name: "Finland", region_code: "FI" },
44 RegionOption { display_name: "Poland", region_code: "PL" },
45 RegionOption { display_name: "Czechia", region_code: "CZ" },
46 RegionOption { display_name: "Hungary", region_code: "HU" },
47 RegionOption { display_name: "Romania", region_code: "RO" },
48 RegionOption { display_name: "Greece", region_code: "GR" },
49 RegionOption { display_name: "Turkey", region_code: "TR" },
50 RegionOption { display_name: "Russia", region_code: "RU" },
51 RegionOption { display_name: "Ukraine", region_code: "UA" },
52 RegionOption { display_name: "Israel", region_code: "IL" },
53 RegionOption { display_name: "United Arab Emirates", region_code: "AE" },
54 RegionOption { display_name: "Saudi Arabia", region_code: "SA" },
55 RegionOption { display_name: "South Africa", region_code: "ZA" },
56 RegionOption { display_name: "Japan", region_code: "JP" },
57 RegionOption { display_name: "South Korea", region_code: "KR" },
58 RegionOption { display_name: "China", region_code: "CN" },
59 RegionOption { display_name: "Hong Kong", region_code: "HK" },
60 RegionOption { display_name: "Taiwan", region_code: "TW" },
61 RegionOption { display_name: "Singapore", region_code: "SG" },
62 RegionOption { display_name: "Indonesia", region_code: "ID" },
63 RegionOption { display_name: "Vietnam", region_code: "VN" },
64 RegionOption { display_name: "Thailand", region_code: "TH" },
65 ];
66}
67
68#[cfg(test)]
69mod tests {
70 use super::*;
71
72 #[test]
73 fn every_entry_has_a_non_empty_display_name_and_code() {
74 for region in RegionOption::ALL {
75 assert!(!region.display_name.is_empty());
76 assert!(!region.region_code.is_empty());
77 }
78 }
79
80 #[test]
81 fn region_codes_are_unique() {
82 let mut codes: Vec<&str> = RegionOption::ALL.iter().map(|r| r.region_code).collect();
83 codes.sort_unstable();
84 codes.dedup();
85 assert_eq!(codes.len(), RegionOption::ALL.len());
86 }
87}