pr_01m3xsjv8netd8ept0sbk2rms3/src/lib.rs

38 lines961 bytesCodeBlame
1//! Greetings.
2
3/// The greeting for `name` in the given language.
4/// Supported languages: "en" (English), "es" (Spanish), "fr" (French).
5/// Returns None for unknown languages.
6pub fn greeting(name: &str, lang: &str) -> Option<String> {
7 match lang {
8 "en" => Some(format!("Hello, {name}!")),
9 "es" => Some(format!("¡Hola, {name}!")),
10 "fr" => Some(format!("Bonjour, {name} !")),
11 _ => None,
12 }
13}
14
15#[cfg(test)]
16mod tests {
17 use super::*;
18
19 #[test]
20 fn greets_by_name() {
21 assert_eq!(greeting("Ada", "en"), Some("Hello, Ada!".to_string()));
22 }
23
24 #[test]
25 fn greets_in_spanish() {
26 assert_eq!(greeting("Ana", "es"), Some("¡Hola, Ana!".to_string()));
27 }
28
29 #[test]
30 fn greets_in_french() {
31 assert_eq!(greeting("Luc", "fr"), Some("Bonjour, Luc !".to_string()));
32 }
33
34 #[test]
35 fn unknown_language_returns_none() {
36 assert_eq!(greeting("Ada", "de"), None);
37 }
38}