Skip to content

Commit e8eba83

Browse files
author
lschuetze
committed
Merge upstream/master
1 parent cabf900 commit e8eba83

File tree

2 files changed

+42
-58
lines changed

2 files changed

+42
-58
lines changed

root-io/src/core/file.rs

Lines changed: 39 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -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
}

root-io/src/tests/basic_io.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ fn list_of_rules() {
4444
println!("{name}: Located span of length {len}");
4545
println!("{}", obj.fragment().to_hex(16));
4646
//let (_, l) = tlist(ctx).parse(obj)?;
47-
let (leftover, ci) = classinfo(obj)?;
47+
let (_leftover, ci) = classinfo(obj)?;
4848
println!("As classinfo: {ci:?}");
4949
Ok((leftover, (name, obj)))
5050
});
@@ -53,8 +53,8 @@ fn list_of_rules() {
5353
Ok((name, l)) => (name, l),
5454
Err(e) => { println!("{}", e); assert!(false); unreachable!() }
5555
};
56-
//println!("name = {}\nlist = {:?}", name, l);
56+
println!("name = {}\nlist = {:?}", name, l);
5757
// let (_obj, l) = tlist(obj, &context).unwrap();
58-
// assert_eq!(l.name, "listOfRules");
58+
//assert_eq!(l, "listOfRules");
5959
// assert_eq!(l.len, 2);
6060
}

0 commit comments

Comments
 (0)