faker_rust/default/
science.rs1use crate::base::sample;
4use crate::locale::{fetch_locale_with_context, sample_with_resolve};
5
6pub fn element() -> String {
8 fetch_locale_with_context("science.element", "en", Some("science"))
9 .map(|v| sample_with_resolve(&v, Some("science")))
10 .unwrap_or_else(|| sample(FALLBACK_ELEMENTS).to_string())
11}
12
13pub fn element_symbol() -> String {
15 fetch_locale_with_context("science.element_symbol", "en", Some("science"))
16 .map(|v| sample_with_resolve(&v, Some("science")))
17 .unwrap_or_else(|| sample(FALLBACK_SYMBOLS).to_string())
18}
19
20pub fn scientist() -> String {
22 fetch_locale_with_context("science.scientist", "en", Some("science"))
23 .map(|v| sample_with_resolve(&v, Some("science")))
24 .unwrap_or_else(|| sample(FALLBACK_SCIENTISTS).to_string())
25}
26
27const FALLBACK_ELEMENTS: &[&str] = &["Hydrogen", "Helium", "Lithium", "Beryllium", "Boron"];
29const FALLBACK_SYMBOLS: &[&str] = &["H", "He", "Li", "Be", "B"];
30const FALLBACK_SCIENTISTS: &[&str] = &[
31 "Isaac Newton",
32 "Albert Einstein",
33 "Marie Curie",
34 "Charles Darwin",
35 "Nikola Tesla",
36];
37
38#[cfg(test)]
39mod tests {
40 use super::*;
41
42 #[test]
43 fn test_element() {
44 assert!(!element().is_empty());
45 }
46
47 #[test]
48 fn test_scientist() {
49 assert!(!scientist().is_empty());
50 }
51}