#[cfg(feature = "math")]
pub fn add(left: u64, right: u64) -> u64 {
left + right
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn it_works() {
let result = add(2, 2);
assert_eq!(result, 4);
}
}
#[cfg(feature = "hello")]
pub fn say_hello(name: &str) -> String {
format!("Hello, {}!", name)
}
#[cfg(feature = "bye")]
pub fn say_goodbye(name: &str) -> String {
format!("Goodbye, {}!", name)
}
#[cfg(feature = "hello")]
pub fn say_hello_to_everyone(names: &[&str]) -> Vec<String> {
names.iter().map(|&name| say_hello(name)).collect()
}
#[cfg(feature = "bye")]
pub fn say_goodbye_to_everyone(names: &[&str]) -> Vec<String> {
names.iter().map(|&name| say_goodbye(name)).collect()
}
#[cfg(test)]
mod greeting_tests {
use super::*;
#[test]
fn test_say_hello() {
let greeting = say_hello("Alice");
assert_eq!(greeting, "Hello, Alice!");
}
#[test]
fn test_say_goodbye() {
let farewell = say_goodbye("Bob");
assert_eq!(farewell, "Goodbye, Bob!");
}
#[test]
fn test_say_hello_to_everyone() {
let names = vec!["Alice", "Bob"];
let greetings = say_hello_to_everyone(&names);
assert_eq!(greetings, vec!["Hello, Alice!", "Hello, Bob!"]);
}
#[test]
fn test_say_goodbye_to_everyone() {
let names = vec!["Alice", "Bob"];
let farewells = say_goodbye_to_everyone(&names);
assert_eq!(farewells, vec!["Goodbye, Alice!", "Goodbye, Bob!"]);
}
}