2021-11-22 14:30:40 +01:00
#[ macro_export ]
macro_rules ! bench {
2021-12-06 12:26:12 +01:00
( $part : ident $( < $gen : literal > ) ? ( $( $param : expr ) , * ) = = $expected :expr ) = > {
2021-12-01 14:16:29 +01:00
paste ::paste! {
2021-11-22 14:30:40 +01:00
#[ bench ]
2021-12-06 12:26:12 +01:00
fn [ < $part $( $gen ) ? _bench > ] ( b : & mut test ::Bencher ) {
2021-12-02 10:31:23 +01:00
let raw = & read_file ( DAY ) ;
2021-11-22 14:30:40 +01:00
let input = parse_input ( & raw ) ;
2021-12-06 12:26:12 +01:00
b . iter ( | | assert_eq! ( $part $( ::< $gen > ) ? ( test ::black_box ( & input ) $(, $param ) * ) , $expected ) ) ;
2021-11-22 14:30:40 +01:00
}
}
} ;
}
#[ macro_export ]
macro_rules ! bench_input {
2021-12-03 17:05:53 +01:00
( $fn :expr = > $expected :expr ) = > {
2021-11-22 14:30:40 +01:00
#[ bench ]
fn bench_input_parsing ( b : & mut test ::Bencher ) {
2021-12-02 10:31:23 +01:00
let raw = & read_file ( DAY ) ;
2021-12-03 17:05:53 +01:00
b . iter ( | | assert_eq! ( $fn ( & parse_input ( test ::black_box ( & raw ) ) ) , $expected ) ) ;
2021-11-22 14:30:40 +01:00
}
} ;
}
#[ macro_export ]
macro_rules ! test {
2021-12-06 12:26:12 +01:00
( $part : ident $( < $gen : literal > ) ? ( $( $param : expr ) , * ) = = $expected :expr ) = > {
2021-12-01 14:16:29 +01:00
paste ::paste! {
2021-11-22 14:30:40 +01:00
#[ test ]
2021-12-06 12:26:12 +01:00
fn [ < $part $( $gen ) ? _test > ] ( ) {
2021-11-22 14:30:40 +01:00
let input = parse_input ( TEST_INPUT ) ;
2021-12-06 12:26:12 +01:00
assert_eq! ( $part $( ::< $gen > ) ? ( & input $(, $param ) * ) , $expected ) ;
2021-11-22 14:30:40 +01:00
}
}
} ;
}