xref: /aosp_15_r20/external/bazelbuild-rules_rust/examples/crate_universe/cargo_workspace/printer/src/lib.rs (revision d4726bddaa87cc4778e7472feed243fa4b6c267f)
1 use std::io::BufWriter;
2 
3 /// Have ferris say a number
say_number(num: i32) -> String4 pub 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() -> String13 pub 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