Fix all_fruits_types_in_basket to fail if all fruit kinds are not included

This commit is contained in:
Daniel Somerfield 2023-11-21 14:02:26 -08:00
parent 14e423fe53
commit 8bfe2ec71e

View file

@ -18,7 +18,7 @@
use std::collections::HashMap; use std::collections::HashMap;
#[derive(Hash, PartialEq, Eq)] #[derive(Hash, PartialEq, Eq, Debug)]
enum Fruit { enum Fruit {
Apple, Apple,
Banana, Banana,
@ -27,6 +27,14 @@ enum Fruit {
Pineapple, Pineapple,
} }
const FRUIT_KINDS: [Fruit; 5] = [
Fruit::Apple,
Fruit::Banana,
Fruit::Mango,
Fruit::Lychee,
Fruit::Pineapple,
];
fn fruit_basket(basket: &mut HashMap<Fruit, u32>) { fn fruit_basket(basket: &mut HashMap<Fruit, u32>) {
let fruit_kinds = vec![ let fruit_kinds = vec![
Fruit::Apple, Fruit::Apple,
@ -81,12 +89,15 @@ mod tests {
let count = basket.values().sum::<u32>(); let count = basket.values().sum::<u32>();
assert!(count > 11); assert!(count > 11);
} }
#[test] #[test]
fn all_fruit_types_in_basket() { fn all_fruit_types_in_basket() {
let mut basket = get_fruit_basket(); let mut basket = get_fruit_basket();
fruit_basket(&mut basket); fruit_basket(&mut basket);
for amount in basket.values() { for fruit_kind in FRUIT_KINDS {
let amount = basket
.get(&fruit_kind)
.expect(format!("Fruit kind {:?} was not found in basket", fruit_kind).as_str());
assert_ne!(amount, &0); assert_ne!(amount, &0);
} }
} }