Skip to main content

faker_rust/default/
verb.rs

1//! Verb generator
2
3use crate::base::sample;
4use crate::locale::fetch_locale;
5
6/// Generate a random verb
7pub fn verb() -> String {
8    fetch_locale("verb.verbs", "en")
9        .map(|v| sample(&v))
10        .unwrap_or_else(|| sample(FALLBACK_VERBS).to_string())
11}
12
13/// Generate a random past tense verb
14pub fn past() -> String {
15    fetch_locale("verb.pasts", "en")
16        .map(|v| sample(&v))
17        .unwrap_or_else(|| sample(FALLBACK_PASTS).to_string())
18}
19
20/// Generate a random present participle
21pub fn ing_form() -> String {
22    fetch_locale("verb.ing_forms", "en")
23        .map(|v| sample(&v))
24        .unwrap_or_else(|| sample(FALLBACK_ING).to_string())
25}
26
27// Fallback data
28const FALLBACK_VERBS: &[&str] = &[
29    "run", "walk", "jump", "swim", "fly", "drive", "read", "write", "speak",
30    "listen", "eat", "drink", "sleep", "wake", "think", "feel", "know",
31    "understand", "learn", "teach", "create", "build", "destroy", "grow",
32    "shrink", "open", "close", "start", "stop", "begin", "end", "continue",
33];
34
35const FALLBACK_PASTS: &[&str] = &[
36    "ran", "walked", "jumped", "swam", "flew", "drove", "read", "wrote",
37    "spoke", "listened", "ate", "drank", "slept", "woke", "thought", "felt",
38    "knew", "understood", "learned", "taught", "created", "built", "destroyed",
39    "grew", "shrank", "opened", "closed", "started", "stopped", "began",
40];
41
42const FALLBACK_ING: &[&str] = &[
43    "running", "walking", "jumping", "swimming", "flying", "driving", "reading",
44    "writing", "speaking", "listening", "eating", "drinking", "sleeping",
45    "waking", "thinking", "feeling", "knowing", "understanding", "learning",
46    "teaching", "creating", "building", "destroying", "growing", "shrinking",
47];
48
49#[cfg(test)]
50mod tests {
51    use super::*;
52
53    #[test]
54    fn test_verb() {
55        assert!(!verb().is_empty());
56    }
57
58    #[test]
59    fn test_past() {
60        assert!(!past().is_empty());
61    }
62
63    #[test]
64    fn test_ing_form() {
65        assert!(!ing_form().is_empty());
66    }
67}