#[macro_export] macro_rules! generate_tests { (day $day:literal, $parse_input:ident, $part_one:ident, $part_two:ident, sample tests [$part_one_sample_ans:expr, $part_two_sample_ans:expr], star tests [$part_one_ans:expr, $part_two_ans:expr]) => { #[cfg(test)] paste::paste! { mod [] { use super::{$parse_input, $part_one, $part_two}; #[test] fn part_one_sample() { let input = include_str!(concat!("../input/day_", $day, "_sample.txt")); let data = $parse_input(input); assert_eq!($part_one_sample_ans, $part_one(data)); } #[test] fn part_one_star() { let input = include_str!(concat!("../input/day_", $day, ".txt")); let data = $parse_input(input); assert_eq!($part_one_ans, $part_one(data)); } #[test] fn part_two_sample() { let input = include_str!(concat!("../input/day_", $day, "_sample.txt")); let data = $parse_input(input); assert_eq!($part_two_sample_ans, $part_two(data)); } #[test] fn part_two_star() { let input = include_str!(concat!("../input/day_", $day, ".txt")); let data = $parse_input(input); assert_eq!($part_two_ans, $part_two(data)); } } } }; }