diff --git a/2020/src/bin/day01.rs b/2020/src/bin/day01.rs index f1c8329..6dfb74c 100644 --- a/2020/src/bin/day01.rs +++ b/2020/src/bin/day01.rs @@ -43,6 +43,6 @@ mod tests { use paste::paste; use test::black_box; - bench!(part1 == 731731); - bench!(part2 == 116115990); + bench!(part1() == 731731); + bench!(part2() == 116115990); } diff --git a/2020/src/bin/day03.rs b/2020/src/bin/day03.rs index f010ca1..3a474d6 100644 --- a/2020/src/bin/day03.rs +++ b/2020/src/bin/day03.rs @@ -101,37 +101,13 @@ mod tests { trees } - test!(count_all_paths == 336); - bench!(count_all_paths == 4723283400); + + test!(count_trees(STEP_RIGHT[1], STEP_DOWN[1]) == 7); + test!(count_trees_imperative(STEP_RIGHT[1], STEP_DOWN[1]) == 7); + test!(count_all_paths() == 336); + + bench!(count_all_paths() == 4723283400); + bench!(count_trees(STEP_RIGHT[1], STEP_DOWN[1]) == 187); + bench!(count_trees_imperative(STEP_RIGHT[1], STEP_DOWN[1]) == 187); bench_input!(len == 323); - - #[test] - fn part1_test_functional() { - let forest = parse_input(TEST_INPUT); - assert_eq!(count_trees(&forest, STEP_RIGHT[1], STEP_DOWN[1]), 7); - } - - #[test] - fn part1_test_imperative() { - let forest = parse_input(TEST_INPUT); - assert_eq!(count_trees_imperative(&forest, STEP_RIGHT[1], STEP_DOWN[1]), 7); - } - - #[bench] - fn bench_part_1_functional(b: &mut test::Bencher) { - let forest = parse_input(&read_input()); - b.iter(|| assert_eq!(count_trees(black_box(&forest), STEP_RIGHT[1], STEP_DOWN[1]), 187)); - } - - #[bench] - fn bench_part_1_imperative(b: &mut test::Bencher) { - let forest = parse_input(&read_input()); - b.iter(|| assert_eq!(count_trees_imperative(black_box(&forest), STEP_RIGHT[1], STEP_DOWN[1]), 187)); - } - - #[bench] - fn bench_part_2(b: &mut test::Bencher) { - let forest = parse_input(&read_input()); - b.iter(|| assert_eq!(count_all_paths(black_box(&forest)), 4723283400)); - } } diff --git a/2020/src/bin/day04.rs b/2020/src/bin/day04.rs index fa0ef74..311a5eb 100644 --- a/2020/src/bin/day04.rs +++ b/2020/src/bin/day04.rs @@ -135,5 +135,5 @@ iyr:2010 hgt:158cm hcl:#b6652a ecl:blu byr:1944 eyr:2021 pid:093154719"; } bench_input!(len == 235); - bench!(part2 == 194); + bench!(part2() == 194); } diff --git a/2020/src/bin/day06.rs b/2020/src/bin/day06.rs index a35b1db..7ad23c5 100644 --- a/2020/src/bin/day06.rs +++ b/2020/src/bin/day06.rs @@ -76,7 +76,7 @@ ldhc"; } bench_input!(len == 490); - test!(part1 == 11); - bench!(part1 == 6735); - bench!(part2 == 3221); + test!(part1() == 11); + bench!(part1() == 6735); + bench!(part2() == 3221); } diff --git a/2020/src/bin/day07.rs b/2020/src/bin/day07.rs index 8b95956..304e77d 100644 --- a/2020/src/bin/day07.rs +++ b/2020/src/bin/day07.rs @@ -80,6 +80,7 @@ mod tests { use super::*; use aoc2020::*; use test::black_box; + use paste::paste; const TEST_INPUT: &str = "light red bags contain 1 bright white bag, 2 muted yellow bags. dark orange bags contain 3 bright white bags, 4 muted yellow bags. @@ -91,12 +92,6 @@ vibrant plum bags contain 5 faded blue bags, 6 dotted black bags. faded blue bags contain no other bags. dotted black bags contain no other bags."; - #[test] - fn part1_test() { - let input = parse_input(TEST_INPUT); - assert_eq!(part1(&input, COLOR, &mut HashSet::new()).len(), 4); - } - const TEST_INPUT_2: &str = "shiny gold bags contain 2 dark red bags. dark red bags contain 2 dark orange bags. dark orange bags contain 2 dark yellow bags. @@ -105,6 +100,12 @@ dark green bags contain 2 dark blue bags. dark blue bags contain 2 dark violet bags. dark violet bags contain no other bags."; + #[test] + fn part1_test() { + let input = parse_input(TEST_INPUT); + assert_eq!(part1(&input, COLOR, &mut HashSet::new()).len(), 4); + } + #[test] fn part2_test() { let input = parse_input(TEST_INPUT); @@ -121,9 +122,5 @@ dark violet bags contain no other bags."; b.iter(|| assert_eq!(part1(black_box(&bags), COLOR, &mut HashSet::new()).len(), 226)) } - #[bench] - fn bench_part2(b: &mut test::Bencher) { - let bags = parse_input(&read_input()); - b.iter(|| assert_eq!(part2(black_box(&bags), COLOR), 9569)) - } + bench!(part2(COLOR) == 9569); } diff --git a/2020/src/bin/day08.rs b/2020/src/bin/day08.rs index a63ff4c..072991f 100644 --- a/2020/src/bin/day08.rs +++ b/2020/src/bin/day08.rs @@ -92,6 +92,8 @@ fn part2(commands: &Vec, seen: &mut Vec, mut index: i32, mut acc: mod tests { use super::*; use test::black_box; + use aoc2020::*; + use paste::paste; const TEST_INPUT: &str = "nop +0 acc +1 @@ -103,38 +105,9 @@ acc +1 jmp -4 acc +6"; - #[test] - fn part1_test() { - let commands = parse_input(TEST_INPUT); - assert_eq!(part1(&commands), 5); - } - - #[test] - fn part2_test() { - let commands = parse_input(TEST_INPUT); - assert_eq!(part2(&commands, &mut vec![false; commands.len()], 0, 0, false), Some(8)); - } - - #[bench] - fn bench_part1(b: &mut test::Bencher) { - let commands = parse_input(&read_input()); - b.iter(|| assert_eq!(part1(black_box(&commands)), 1317)); - } - - #[bench] - fn bench_part2(b: &mut test::Bencher) { - let commands = parse_input(&read_input()); - b.iter(|| { - assert_eq!( - part2(black_box(&commands), &mut vec![false; commands.len()], 0, 0, false), - Some(1033) - ) - }); - } - - #[bench] - fn bench_input_parsing(b: &mut test::Bencher) { - let raw = read_input(); - b.iter(|| assert_eq!(parse_input(black_box(&raw)).len(), 626)) - } + test!(part1() == 5); + test!(part2(&mut vec![false; 9], 0, 0, false) == Some(8)); + bench!(part1() == 1317); + bench!(part2(&mut vec![false; 626], 0, 0, false) == Some(1033)); + bench_input!(len == 626); } diff --git a/2020/src/bin/day09.rs b/2020/src/bin/day09.rs index a91889b..df41014 100644 --- a/2020/src/bin/day09.rs +++ b/2020/src/bin/day09.rs @@ -54,6 +54,8 @@ fn main() { mod tests { use super::*; use test::black_box; + use aoc2020::*; + use paste::paste; const TEST_INPUT: &str = "35 20 @@ -76,27 +78,8 @@ mod tests { 309 576"; - #[test] - fn part1_test() { - let input = parse_input(TEST_INPUT); - assert_eq!(part1(&input, 5), 127); - } - - #[test] - fn part2_test() { - let input = parse_input(TEST_INPUT); - assert_eq!(part2(&input, 127), 62); - } - - #[bench] - fn bench_part1(b: &mut test::Bencher) { - let input = parse_input(&read_input()); - b.iter(|| assert_eq!(part1(black_box(&input), 25), 393911906)); - } - - #[bench] - fn bench_part2(b: &mut test::Bencher) { - let input = parse_input(&read_input()); - b.iter(|| assert_eq!(part2(black_box(&input), 393911906), 59341885)); - } + test!(part1(5) == 127); + test!(part2(127) == 62); + bench!(part1(25) == 393911906); + bench!(part2(393911906) == 59341885); } diff --git a/2020/src/bin/day10.rs b/2020/src/bin/day10.rs index 3f7b367..ffd017b 100644 --- a/2020/src/bin/day10.rs +++ b/2020/src/bin/day10.rs @@ -86,9 +86,9 @@ mod tests { 10 3"; - test!(part1 == (22, 10)); - test!(part2 == 19208); - bench!(part1 == (69, 24)); - bench!(part2 == 56693912375296); + test!(part1() == (22, 10)); + test!(part2() == 19208); + bench!(part1() == (69, 24)); + bench!(part2() == 56693912375296); bench_input!(len == 93); } diff --git a/2020/src/teststuff.rs b/2020/src/teststuff.rs index a1e4ecf..5e17583 100644 --- a/2020/src/teststuff.rs +++ b/2020/src/teststuff.rs @@ -1,11 +1,11 @@ #[macro_export] macro_rules! bench { - ($part: ident == $expected:expr) => { + ($part: ident ($($param: expr),*) == $expected:expr) => { paste! { #[bench] fn [<$part _bench>](b: &mut test::Bencher) { let input = parse_input(&read_input()); - b.iter(|| assert_eq!($part(black_box(&input)), $expected)); + b.iter(|| assert_eq!($part(black_box(&input)$(, $param)*), $expected)); } } }; @@ -24,12 +24,12 @@ macro_rules! bench_input { #[macro_export] macro_rules! test { - ($part: ident == $expected:expr) => { + ($part: ident ($($param: expr),*) == $expected:expr) => { paste! { #[test] fn [<$part _test>]() { let input = parse_input(TEST_INPUT); - assert_eq!($part(&input), $expected); + assert_eq!($part(&input$(, $param)*), $expected); } } };