From 53d01a39698f644975df12d88110c66ea30c69a0 Mon Sep 17 00:00:00 2001 From: Patryk Hegenberg Date: Sun, 28 Apr 2024 14:24:27 +0200 Subject: [PATCH] feature(sender): added random name generator --- src/sender/mod.rs | 1 + src/sender/util.rs | 39 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 40 insertions(+) create mode 100644 src/sender/util.rs diff --git a/src/sender/mod.rs b/src/sender/mod.rs index 137be56..f216012 100644 --- a/src/sender/mod.rs +++ b/src/sender/mod.rs @@ -39,6 +39,7 @@ /// The `start` function takes ownership of the `WebSocketStream` and the file /// paths, so we pass it the `paths` vector by value. pub mod client; +pub mod util; use crate::sender::client as sender; use tokio_tungstenite::{ diff --git a/src/sender/util.rs b/src/sender/util.rs new file mode 100644 index 0000000..8c8d4a2 --- /dev/null +++ b/src/sender/util.rs @@ -0,0 +1,39 @@ +use rand::{seq::SliceRandom, thread_rng}; + +fn generate_random_name() -> String { + let mut rng = thread_rng(); + let adjective = adjectives().choose(&mut rng).unwrap(); + // let adjective = adjectives().sample(&mut rng).unwrap(); + let noun1 = nouns1().choose(&mut rng).unwrap(); + let noun2 = nouns2().choose(&mut rng).unwrap(); + + format!("{adjective}-{noun1}-{noun2}") +} + +fn adjectives() -> &'static [&'static str] { + static ADJECTIVES: &[&str] = &["funny", "smart", "creative", "friendly", "great"]; + ADJECTIVES +} + +fn nouns1() -> &'static [&'static str] { + static NOUNS1: &[&str] = &["dog", "cat", "flower", "tree", "house"]; + NOUNS1 +} + +fn nouns2() -> &'static [&'static str] { + static NOUNS2: &[&str] = &["cookie", "cake", "frosting"]; + NOUNS2 +} +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn test_generate_random_name() { + let name = generate_random_name(); + + assert!(name.contains('-')); + assert!(name.split('-').count() == 3); + assert!(name.len() > 0); + } +}