mod model; mod parsing; use aoc_runner_derive::{aoc, aoc_generator}; pub use model::{Kind, Operator, Packet}; pub use parsing::{parse_packet, BinTokens}; #[aoc_generator(day16)] pub fn parse_input(input: &str) -> Packet { parse_packet(&mut input.parse::().unwrap()).unwrap() } #[aoc(day16, part1)] pub fn part1(input: &Packet) -> usize { input.sum_of_version_numbers() } //#[aoc(dayx, part2)] //pub fn part2(input: &[Input]) -> usize { // unimplemented!(); //} #[cfg(test)] mod test { const EXAMPLE_INPUT: &str = "A0016C880162017C3686B18A3D4780"; const RESULT_PART_1: usize = 31; //const RESULT_PART_2: usize = 0; #[test] fn part1_example() { let result = super::part1(&super::parse_input(EXAMPLE_INPUT)); assert_eq!(result, RESULT_PART_1); } //#[test] //fn part2_example() { // let result = super::part2(&super::parse_input(EXAMPLE_INPUT)); // assert_eq!(result, RESULT_PART_2); //} #[test] fn parse_example() { super::parse_input(EXAMPLE_INPUT); } }