2020-12-10 14:01:25 +01:00
#[ macro_export ]
macro_rules ! bench {
2020-12-10 16:41:54 +01:00
( $part : ident ( $( $param : expr ) , * ) = = $expected :expr ) = > {
2020-12-10 14:01:25 +01:00
paste! {
#[ bench ]
fn [ < $part _bench > ] ( b : & mut test ::Bencher ) {
2020-12-14 10:45:37 +01:00
let raw = & read_input ( ) ;
let input = parse_input ( & raw ) ;
2020-12-10 16:41:54 +01:00
b . iter ( | | assert_eq! ( $part ( black_box ( & input ) $(, $param ) * ) , $expected ) ) ;
2020-12-10 14:01:25 +01:00
}
}
} ;
}
#[ macro_export ]
macro_rules ! bench_input {
( $fn :ident = = $expected_len :expr ) = > {
#[ bench ]
fn bench_input_parsing ( b : & mut test ::Bencher ) {
let raw = read_input ( ) ;
b . iter ( | | assert_eq! ( parse_input ( black_box ( & raw ) ) . $fn ( ) , $expected_len ) ) ;
}
} ;
}
#[ macro_export ]
macro_rules ! test {
2020-12-10 16:41:54 +01:00
( $part : ident ( $( $param : expr ) , * ) = = $expected :expr ) = > {
2020-12-10 14:01:25 +01:00
paste! {
#[ test ]
fn [ < $part _test > ] ( ) {
let input = parse_input ( TEST_INPUT ) ;
2020-12-10 16:41:54 +01:00
assert_eq! ( $part ( & input $(, $param ) * ) , $expected ) ;
2020-12-10 14:01:25 +01:00
}
}
} ;
}