diff --git a/exercises/options/options1.rs b/exercises/options/options1.rs index 9d96817..038fb48 100644 --- a/exercises/options/options1.rs +++ b/exercises/options/options1.rs @@ -8,16 +8,30 @@ fn print_number(maybe_number: Option) { println!("printing: {}", maybe_number.unwrap()); } -fn main() { - print_number(13); - print_number(99); +// This function returns how much icecream there is left in the fridge. +// If it's before 10PM, there's 5 pieces left. At 10PM, someone eats them +// all, so there'll be no more left :( +// TODO: Return an Option! +fn maybe_icecream(time_of_day: u16) -> Option { + // We use the 24-hour system here, so 10PM is a value of 22 + ??? +} - let mut numbers: [Option; 5]; - for iter in 0..5 { - let number_to_add: u16 = { - ((iter * 1235) + 2) / (4 * 16) - }; +#[cfg(test)] +mod tests { + use super::*; - numbers[iter as usize] = number_to_add; + #[test] + fn check_icecream() { + assert_eq!(maybe_icecream(10), Some(5)); + assert_eq!(maybe_icecream(23), None); + assert_eq!(maybe_icecream(22), None); + } + + #[test] + fn raw_value() { + // TODO: Fix this test. How do you get at the value contained in the Option? + let icecreams = maybe_icecream(12); + assert_eq!(icecreams, 5); } }