@@ -137,26 +137,49 @@ macro_rules! examples {
137137 #[ test]
138138 fn new( ) {
139139 for ( i, example) in $day:: EXAMPLES . iter( ) . enumerate( ) {
140- let solution = $day:: new( example. 0 , InputType :: Example ) ;
140+ let ( lf, crlf) = $crate:: input:: to_lf_crlf( example. 0 ) ;
141+
142+ let solution = $day:: new( & lf, InputType :: Example ) ;
141143 assert!(
142144 solution. is_ok( ) ,
143145 "new failed for example {i}: {:?}" ,
144146 example. 0 ,
145147 ) ;
148+
149+ if let Some ( crlf) = crlf {
150+ let solution = $day:: new( & crlf, InputType :: Example ) ;
151+ assert!(
152+ solution. is_ok( ) ,
153+ "new failed for example {i} with CRLF line endings: {:?}" ,
154+ example. 0 ,
155+ ) ;
156+ }
146157 }
147158 }
148159
149160 #[ test]
150161 fn part1( ) {
151162 for ( i, example) in $day:: EXAMPLES . iter( ) . enumerate( ) {
152163 if let Some ( expected) = example. 1 {
153- let solution = $day:: new( example. 0 , InputType :: Example ) . unwrap( ) ;
164+ let ( lf, crlf) = $crate:: input:: to_lf_crlf( example. 0 ) ;
165+
166+ let solution = $day:: new( & lf, InputType :: Example ) . unwrap( ) ;
154167 assert_eq!(
155168 solution. part1( ) ,
156169 expected,
157170 "part 1 incorrect for example {i}: {:?}" ,
158171 example. 0 ,
159172 ) ;
173+
174+ if let Some ( crlf) = crlf {
175+ let solution = $day:: new( & crlf, InputType :: Example ) . unwrap( ) ;
176+ assert_eq!(
177+ solution. part1( ) ,
178+ expected,
179+ "part 1 incorrect for example {i} with CRLF line endings: {:?}" ,
180+ example. 0 ,
181+ ) ;
182+ }
160183 }
161184 }
162185 }
@@ -165,13 +188,25 @@ macro_rules! examples {
165188 fn part2( ) {
166189 for ( i, example) in $day:: EXAMPLES . iter( ) . enumerate( ) {
167190 if let Some ( expected) = example. 2 {
168- let solution = $day:: new( example. 0 , InputType :: Example ) . unwrap( ) ;
191+ let ( lf, crlf) = $crate:: input:: to_lf_crlf( example. 0 ) ;
192+
193+ let solution = $day:: new( & lf, InputType :: Example ) . unwrap( ) ;
169194 assert_eq!(
170195 solution. part2( ) ,
171196 expected,
172197 "part 2 incorrect for example {i}: {:?}" ,
173198 example. 0 ,
174199 ) ;
200+
201+ if let Some ( crlf) = crlf {
202+ let solution = $day:: new( & crlf, InputType :: Example ) . unwrap( ) ;
203+ assert_eq!(
204+ solution. part2( ) ,
205+ expected,
206+ "part 2 incorrect for example {i} with CRLF line endings: {:?}" ,
207+ example. 0 ,
208+ ) ;
209+ }
175210 }
176211 }
177212 }
@@ -190,21 +225,21 @@ macro_rules! examples {
190225 } ;
191226 ( @item { file: $file: literal, part1: $p1: expr, part2: $p2: expr $( , ) ?} ) => {
192227 (
193- include_str!( concat!( env!( "CARGO_MANIFEST_DIR" ) , "/examples/" , $file) ) . trim_ascii_end ( ) ,
228+ $crate :: input :: strip_final_newline ( include_str!( concat!( env!( "CARGO_MANIFEST_DIR" ) , "/examples/" , $file) ) ) ,
194229 Some ( $p1) ,
195230 Some ( $p2) ,
196231 )
197232 } ;
198233 ( @item { file: $file: literal, part1: $p1: expr $( , ) ?} ) => {
199234 (
200- include_str!( concat!( env!( "CARGO_MANIFEST_DIR" ) , "/examples/" , $file) ) . trim_ascii_end ( ) ,
235+ $crate :: input :: strip_final_newline ( include_str!( concat!( env!( "CARGO_MANIFEST_DIR" ) , "/examples/" , $file) ) ) ,
201236 Some ( $p1) ,
202237 None ,
203238 )
204239 } ;
205240 ( @item { file: $file: literal, part2: $p2: expr $( , ) ?} ) => {
206241 (
207- include_str!( concat!( env!( "CARGO_MANIFEST_DIR" ) , "/examples/" , $file) ) . trim_ascii_end ( ) ,
242+ $crate :: input :: strip_final_newline ( include_str!( concat!( env!( "CARGO_MANIFEST_DIR" ) , "/examples/" , $file) ) ) ,
208243 None ,
209244 Some ( $p2) ,
210245 )
0 commit comments