1 use std::io::BufWriter; 2 3 /// Have ferris say a number say_number(num: i32) -> String4pub fn say_number(num: i32) -> String { 5 let number = format!("{num}"); 6 let buf = Vec::new(); 7 let mut writer = BufWriter::new(buf); 8 ferris_says::say(number.as_bytes(), number.len(), &mut writer).unwrap(); 9 String::from_utf8(writer.into_inner().unwrap()).unwrap() 10 } 11 12 /// Have ferris say a random number say_random_number() -> String13pub fn say_random_number() -> String { 14 say_number(rng::random_number()) 15 } 16 17 #[cfg(test)] 18 mod test { 19 use super::*; 20 21 #[test] test_say_number()22 fn test_say_number() { 23 let said = say_number(3); 24 assert!(said.contains(r" _~^~^~_")); 25 assert!(said.contains(r"\) / o o \ (/")); 26 assert!(said.contains(r" '_ - _'")); 27 assert!(said.contains(r" / '-----' \")); 28 } 29 30 #[test] test_say_random_number()31 fn test_say_random_number() { 32 let said = say_random_number(); 33 assert!(said.contains(r" _~^~^~_")); 34 assert!(said.contains(r"\) / o o \ (/")); 35 assert!(said.contains(r" '_ - _'")); 36 assert!(said.contains(r" / '-----' \")); 37 } 38 } 39