faker_rust/default/
string.rs1pub fn random(length: usize) -> String {
6 let chars: Vec<char> = (0..length)
7 .map(|_| {
8 let alphabet = "abcdefghijklmnopqrstuvwxyz";
9 let idx = (rand::random::<u8>() as usize) % alphabet.len();
10 alphabet.chars().nth(idx).unwrap()
11 })
12 .collect();
13 chars.into_iter().collect()
14}
15
16pub fn uppercase(length: usize) -> String {
18 random(length).to_uppercase()
19}
20
21pub fn lowercase(length: usize) -> String {
23 random(length).to_lowercase()
24}
25
26pub fn alphanumeric(length: usize) -> String {
28 let chars: Vec<char> = (0..length)
29 .map(|_| {
30 let alphabet = "abcdefghijklmnopqrstuvwxyz0123456789";
31 let idx = (rand::random::<u8>() as usize) % alphabet.len();
32 alphabet.chars().nth(idx).unwrap()
33 })
34 .collect();
35 chars.into_iter().collect()
36}
37
38#[cfg(test)]
39mod tests {
40 use super::*;
41
42 #[test]
43 fn test_random() {
44 let s = random(10);
45 assert_eq!(s.len(), 10);
46 }
47
48 #[test]
49 fn test_uppercase() {
50 let s = uppercase(10);
51 assert_eq!(s.len(), 10);
52 assert!(s.chars().all(|c| c.is_uppercase()));
53 }
54
55 #[test]
56 fn test_lowercase() {
57 let s = lowercase(10);
58 assert_eq!(s.len(), 10);
59 assert!(s.chars().all(|c| c.is_lowercase()));
60 }
61
62 #[test]
63 fn test_alphanumeric() {
64 let s = alphanumeric(10);
65 assert_eq!(s.len(), 10);
66 assert!(s.chars().all(|c| c.is_alphanumeric()));
67 }
68}