Skip to main content

faker_rust/default/
mountain.rs

1//! Mountain generator
2
3use crate::base::sample;
4use crate::locale::fetch_locale;
5
6/// Generate a random mountain name
7pub fn name() -> String {
8    fetch_locale("mountain.names", "en")
9        .map(|v| sample(&v))
10        .unwrap_or_else(|| sample(FALLBACK_NAMES).to_string())
11}
12
13/// Generate a random mountain range
14pub fn range() -> String {
15    fetch_locale("mountain.ranges", "en")
16        .map(|v| sample(&v))
17        .unwrap_or_else(|| sample(FALLBACK_RANGES).to_string())
18}
19
20// Fallback data
21const FALLBACK_NAMES: &[&str] = &[
22    "Mount Everest", "K2", "Kangchenjunga", "Lhotse", "Makalu", "Cho Oyu",
23    "Dhaulagiri", "Manaslu", "Nanga Parbat", "Annapurna", "Gasherbrum I",
24    "Broad Peak", "Gasherbrum II", "Shishapangma", "Mount Kilimanjaro",
25    "Mount McKinley", "Mount Elbrus", "Mount Kilimanjaro", "Mount Fuji",
26    "Mount Rainier", "Matterhorn", "Mont Blanc",
27];
28
29const FALLBACK_RANGES: &[&str] = &[
30    "Himalayas", "Karakoram", "Hindu Kush", "Andes", "Alps", "Rockies",
31    "Appalachians", "Cascades", "Sierra Nevada", "Atlas Mountains",
32    "Drakensberg", "Caucasus Mountains", "Ural Mountains",
33];
34
35#[cfg(test)]
36mod tests {
37    use super::*;
38
39    #[test]
40    fn test_name() {
41        assert!(!name().is_empty());
42    }
43
44    #[test]
45    fn test_range() {
46        assert!(!range().is_empty());
47    }
48}