day4: Add tests
This commit is contained in:
		@@ -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
 | 
			
		||||
// total?
 | 
			
		||||
 | 
			
		||||
fn problem1(input: InputIter) -> u64 {
 | 
			
		||||
fn problem1<T: BufRead>(input: Lines<T>) -> u64 {
 | 
			
		||||
    let cards: Vec<Card> = input
 | 
			
		||||
        .map(|line| Card::from(line.unwrap().as_str()))
 | 
			
		||||
        .collect();
 | 
			
		||||
@@ -199,7 +199,7 @@ fn problem2_award_copies<'a>(orig_cards: &'a Vec<Card>, card: &Card) -> Vec<&'a
 | 
			
		||||
    new_cards
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
fn problem2(input: InputIter) -> u64 {
 | 
			
		||||
fn problem2<T: BufRead>(input: Lines<T>) -> u64 {
 | 
			
		||||
    let orig_cards: Vec<Card> = input
 | 
			
		||||
        .map(|line| Card::from(line.unwrap().as_str()))
 | 
			
		||||
        .collect();
 | 
			
		||||
@@ -218,3 +218,29 @@ fn problem2(input: InputIter) -> 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);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user