@@ -260,6 +260,7 @@ mod test {
260260 use tokio;
261261
262262 use std:: path:: Path ;
263+ use crate :: core:: ReadError ;
263264
264265 use super :: * ;
265266 use self :: UnwrapPrint ;
@@ -279,16 +280,13 @@ mod test {
279280 }
280281 }
281282
282- async fn file_header_test ( source : Source ) {
283- let hdr = source
284- . fetch ( 0 , FILE_HEADER_SIZE )
285- . await
286- . and_then ( |buf| {
287- file_header ( & buf)
288- . map_err ( |_| format_err ! ( "Failed to parse file header" ) )
289- . map ( |( _i, o) | o)
290- } )
291- . unwrap ( ) ;
283+ async fn file_header_test ( source : Source ) -> Result < ( ) , ReadError > {
284+ let buf = source. fetch ( 0 , FILE_HEADER_SIZE ) . await ?;
285+
286+ let hdr = match wrap_parser ( file_header) ( & buf) {
287+ Ok ( hdr) => hdr,
288+ Err ( e) => return Err ( ReadError :: ParseError ( e) )
289+ } ;
292290
293291 let should = FileHeader {
294292 version : 60600 ,
@@ -306,40 +304,29 @@ mod test {
306304 seek_dir : 158 ,
307305 } ;
308306 assert_eq ! ( hdr, should) ;
307+
308+ Ok ( ( ) )
309309 }
310310
311311 #[ tokio:: test]
312312 async fn file_header_test_local ( ) {
313313 let local = Source :: new ( Path :: new ( "./src/test_data/simple.root" ) ) ;
314- file_header_test ( local) . await ;
314+ file_header_test ( local) . await . unwrap_print ( ) ;
315315 }
316316
317317 #[ tokio:: test]
318318 async fn file_header_test_remote ( ) {
319319 let remote = Source :: new ( Url :: parse ( SIMPLE_FILE_REMOTE ) . unwrap ( ) ) ;
320- file_header_test ( remote) . await ;
320+ file_header_test ( remote) . await . unwrap_print ( ) ;
321321 }
322322
323- async fn directory_test ( source : Source ) {
324- let hdr = source
325- . fetch ( 0 , FILE_HEADER_SIZE )
326- . await
327- . and_then ( |buf| {
328- file_header ( & buf)
329- . map_err ( |_| ParseError ( e) )
330- . map ( |( _i, o) | o)
331- } )
332- . unwrap ( ) ;
333-
334- let dir = source
335- . fetch ( hdr. seek_dir , TDIRECTORY_MAX_SIZE )
336- . await
337- . and_then ( |buf| {
338- directory ( & buf)
339- . map_err ( |e| ParseError ( e) )
340- . map ( |( _i, o) | o)
341- } )
342- . unwrap ( ) ;
323+ async fn directory_test ( source : Source ) -> Result < ( ) , ReadError > {
324+ let hdr_buf = source. fetch ( 0 , FILE_HEADER_SIZE ) . await ?;
325+ let hdr = wrap_parser ( file_header) ( & hdr_buf) ?;
326+
327+ let dir_buf = source. fetch ( hdr. seek_dir , TDIRECTORY_MAX_SIZE ) . await ?;
328+ let dir = wrap_parser ( directory) ( & dir_buf) ?;
329+
343330 assert_eq ! (
344331 dir,
345332 Directory {
@@ -354,30 +341,26 @@ mod test {
354341 seek_keys: 1021
355342 }
356343 ) ;
344+
345+ Ok ( ( ) )
357346 }
358347
359348 #[ tokio:: test]
360349 async fn directory_test_local ( ) {
361350 let local = Path :: new ( "./src/test_data/simple.root" ) . into ( ) ;
362- directory_test ( local) . await ;
351+ directory_test ( local) . await . unwrap_print ( ) ;
363352 }
364353
365354 #[ tokio:: test]
366355 async fn directory_test_remote ( ) {
367356 let remote = Source :: new ( Url :: parse ( SIMPLE_FILE_REMOTE ) . unwrap ( ) ) ;
368- directory_test ( remote) . await ;
357+ directory_test ( remote) . await . unwrap_print ( ) ;
369358 }
370359
371- async fn streamerinfo_test ( source : Source ) {
372- let key = source
373- . fetch ( 1117 , 4446 )
374- . await
375- . and_then ( |buf| {
376- tkey ( & buf)
377- . map_err ( |e| ParseError ( e) )
378- . map ( |( _i, o) | o)
379- } )
380- . unwrap ( ) ;
360+ async fn streamerinfo_test ( source : Source ) -> Result < ( ) , ReadError > {
361+ let buf = source. fetch ( 1117 , 4446 ) . await ?;
362+ let key = wrap_parser ( tkey) ( & buf) ?;
363+
381364 assert_eq ! ( key. hdr. obj_name, "StreamerInfo" ) ;
382365
383366 let key_len = key. hdr . key_len ;
@@ -388,22 +371,23 @@ mod test {
388371 s : key. obj ,
389372 } ;
390373
391- match length_value ( checked_byte_count, |i| {
392- tlist :: < VerboseError < _ > > ( i, & context)
393- } ) ( & context. s )
394- {
395- Ok ( ( _, l) ) => {
396- assert_eq ! ( l. len( ) , 19 ) ;
397- }
398- Err ( _e) => panic ! ( "Not parsed as TList!" ) ,
399- } ;
374+ let mut tlist_parser = wrap_parser_ctx ( |ctx| {
375+ length_value ( checked_byte_count, move |i| {
376+ tlist :: < VerboseError < _ > > ( & ctx) . parse ( i)
377+ } ) . all_consuming ( )
378+ } ) ;
379+
380+ let tlist = tlist_parser ( & context) ?;
381+ assert_eq ! ( tlist. len( ) , 19 ) ;
382+
383+ Ok ( ( ) )
400384 }
401385
402386 #[ tokio:: test]
403387 async fn streamerinfo_test_local ( ) {
404388
405389 let local = Path :: new ( "./src/test_data/simple.root" ) . into ( ) ;
406- streamerinfo_test ( local) . await ;
390+ streamerinfo_test ( local) . await . unwrap_print ( ) ;
407391 }
408392
409393 #[ tokio:: test]
@@ -412,6 +396,6 @@ mod test {
412396 "https://github.com/cbourjau/alice-rs/blob/master/root-io/src/test_data/simple.root?raw=true" )
413397 . unwrap ( )
414398 . into ( ) ;
415- streamerinfo_test ( remote) . await ;
399+ streamerinfo_test ( remote) . await . unwrap_print ( ) ;
416400 }
417401}
0 commit comments