| 2 | 2 | | |
| 3 | 3 | | /// The greeting for `name`. |
| 4 | 4 | | pub fn greeting(name: &str) -> String { |
| 5 | | - | format!("Hello, {name}!") |
| 5 | + | let trimmed = name.trim(); |
| 6 | + | let display_name = if trimmed.is_empty() { |
| 7 | + | "world" |
| 8 | + | } else { |
| 9 | + | trimmed |
| 10 | + | }; |
| 11 | + | format!("Hello, {display_name}!") |
| 6 | 12 | | } |
| 7 | 13 | | |
| 8 | 14 | | #[cfg(test)] |
| ⋯ |
| 13 | 19 | | fn greets_by_name() { |
| 14 | 20 | | assert_eq!(greeting("Ada"), "Hello, Ada!"); |
| 15 | 21 | | } |
| 22 | + | |
| 23 | + | #[test] |
| 24 | + | fn greets_world_for_empty_name() { |
| 25 | + | assert_eq!(greeting(""), "Hello, world!"); |
| 26 | + | } |
| 27 | + | |
| 28 | + | #[test] |
| 29 | + | fn greets_world_for_whitespace_only() { |
| 30 | + | assert_eq!(greeting(" "), "Hello, world!"); |
| 31 | + | } |
| 32 | + | |
| 33 | + | #[test] |
| 34 | + | fn trims_surrounding_whitespace() { |
| 35 | + | assert_eq!(greeting(" Bob "), "Hello, Bob!"); |
| 36 | + | } |
| 16 | 37 | | } |