day4: Add tests

This commit is contained in:
Keenan Tims 2023-12-05 21:45:49 -08:00
parent a1f44e5886
commit db4a8b0d24
No known key found for this signature in database
GPG Key ID: B8FDD4AD6B193F06

View File

@ -129,7 +129,7 @@ impl From<&str> for Card {
// Take a seat in the large pile of colorful cards. How many points are they worth in // Take a seat in the large pile of colorful cards. How many points are they worth in
// total? // total?
fn problem1(input: InputIter) -> u64 { fn problem1<T: BufRead>(input: Lines<T>) -> u64 {
let cards: Vec<Card> = input let cards: Vec<Card> = input
.map(|line| Card::from(line.unwrap().as_str())) .map(|line| Card::from(line.unwrap().as_str()))
.collect(); .collect();
@ -199,7 +199,7 @@ fn problem2_award_copies<'a>(orig_cards: &'a Vec<Card>, card: &Card) -> Vec<&'a
new_cards new_cards
} }
fn problem2(input: InputIter) -> u64 { fn problem2<T: BufRead>(input: Lines<T>) -> u64 {
let orig_cards: Vec<Card> = input let orig_cards: Vec<Card> = input
.map(|line| Card::from(line.unwrap().as_str())) .map(|line| Card::from(line.unwrap().as_str()))
.collect(); .collect();
@ -218,3 +218,29 @@ fn problem2(input: InputIter) -> u64 {
(won_cards.len() + orig_cards.len()) as u64 (won_cards.len() + orig_cards.len()) as u64
} }
#[cfg(test)]
mod tests {
use crate::{problem1, problem2};
use std::io::{BufRead, Cursor};
const example_input: &str = "Card 1: 41 48 83 86 17 | 83 86 6 31 17 9 48 53
Card 2: 13 32 20 16 61 | 61 30 68 82 17 32 24 19
Card 3: 1 21 53 59 44 | 69 82 63 72 16 21 14 1
Card 4: 41 92 73 84 69 | 59 84 76 51 58 5 54 83
Card 5: 87 83 26 28 32 | 88 30 70 12 93 22 82 36
Card 6: 31 18 13 56 72 | 74 77 10 23 35 67 36 11";
#[test]
fn problem1_example_test() {
let input = Cursor::new(example_input).lines();
assert_eq!(problem1(input), 13);
}
#[test]
fn problem2_example_test() {
let input = Cursor::new(example_input).lines();
assert_eq!(problem2(input), 30);
}
}