use rand::Rng;
use std::io;
pub fn select_word() -> &'static str {
let words = vec!["apple", "banana", "cherry", "date", "elderberry"];
let mut rng = rand::thread_rng();
let index = rng.gen_range(0..words.len());
words[index]
}
pub fn check_guess(secret_word: &str, guess: &str) -> bool {
secret_word == guess
}
pub fn play_pictionary() {
let secret_word = select_word();
println!("Guess the word I am thinking of!");
loop {
let mut guess = String::new();
println!("Please input your guess.");
io::stdin()
.read_line(&mut guess)
.expect("Failed to read line");
let guess = guess.trim();
if check_guess(secret_word, guess) {
println!("You guessed correctly!");
break;
} else {
println!("Try again.");
}
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_check_guess_correct() {
assert!(check_guess("apple", "apple"));
}
#[test]
fn test_check_guess_incorrect() {
assert!(!check_guess("apple", "banana"));
}
#[test]
fn test_select_word_is_in_list() {
let word = select_word();
let words = vec!["apple", "banana", "cherry", "date", "elderberry"];
assert!(words.contains(&word));
}
}