@@ -357,6 +357,7 @@ impl fmt::Display for ValueWithUnits {
357
357
358
358
#[ cfg( test) ]
359
359
mod tests {
360
+ use super :: profile:: { MesgNum , Message , MessageParseOptions } ;
360
361
use super :: * ;
361
362
use std:: collections:: HashSet ;
362
363
@@ -365,69 +366,99 @@ mod tests {
365
366
let data = include_bytes ! ( "../tests/fixtures/Activity.fit" ) . to_vec ( ) ;
366
367
let fit_data = from_bytes ( & data) . unwrap ( ) ;
367
368
assert_eq ! ( fit_data. len( ) , 22 ) ;
369
+ for record in fit_data {
370
+ assert ! ( Message :: parse( record) . is_ok( ) ) ;
371
+ }
368
372
}
369
373
370
374
#[ test]
371
375
fn parse_developer_data ( ) {
372
376
let data = include_bytes ! ( "../tests/fixtures/DeveloperData.fit" ) . to_vec ( ) ;
373
377
let fit_data = from_bytes ( & data) . unwrap ( ) ;
374
378
assert_eq ! ( fit_data. len( ) , 6 ) ;
379
+ for record in fit_data {
380
+ assert ! ( Message :: parse( record) . is_ok( ) ) ;
381
+ }
375
382
}
376
383
377
384
#[ test]
378
385
fn parse_monitoring_file ( ) {
379
386
let data = include_bytes ! ( "../tests/fixtures/MonitoringFile.fit" ) . to_vec ( ) ;
380
387
let fit_data = from_bytes ( & data) . unwrap ( ) ;
381
388
assert_eq ! ( fit_data. len( ) , 355 ) ;
389
+ for record in fit_data {
390
+ assert ! ( Message :: parse( record) . is_ok( ) ) ;
391
+ }
382
392
}
383
393
384
394
#[ test]
385
395
fn parse_settings ( ) {
386
396
let data = include_bytes ! ( "../tests/fixtures/Settings.fit" ) . to_vec ( ) ;
387
397
let fit_data = from_bytes ( & data) . unwrap ( ) ;
388
398
assert_eq ! ( fit_data. len( ) , 3 ) ;
399
+ for record in fit_data {
400
+ assert ! ( Message :: parse( record) . is_ok( ) ) ;
401
+ }
389
402
}
390
403
391
404
#[ test]
392
405
fn parse_weight_scale_multi_user ( ) {
393
406
let data = include_bytes ! ( "../tests/fixtures/WeightScaleMultiUser.fit" ) . to_vec ( ) ;
394
407
let fit_data = from_bytes ( & data) . unwrap ( ) ;
395
408
assert_eq ! ( fit_data. len( ) , 7 ) ;
409
+ for record in fit_data {
410
+ assert ! ( Message :: parse( record) . is_ok( ) ) ;
411
+ }
396
412
}
397
413
398
414
#[ test]
399
415
fn parse_weight_scale_single_user ( ) {
400
416
let data = include_bytes ! ( "../tests/fixtures/WeightScaleSingleUser.fit" ) . to_vec ( ) ;
401
417
let fit_data = from_bytes ( & data) . unwrap ( ) ;
402
418
assert_eq ! ( fit_data. len( ) , 6 ) ;
419
+ for record in fit_data {
420
+ assert ! ( Message :: parse( record) . is_ok( ) ) ;
421
+ }
403
422
}
404
423
405
424
#[ test]
406
425
fn parse_workout_custom_target_values ( ) {
407
426
let data = include_bytes ! ( "../tests/fixtures/WorkoutCustomTargetValues.fit" ) . to_vec ( ) ;
408
427
let fit_data = from_bytes ( & data) . unwrap ( ) ;
409
428
assert_eq ! ( fit_data. len( ) , 6 ) ;
429
+ for record in fit_data {
430
+ assert ! ( Message :: parse( record) . is_ok( ) ) ;
431
+ }
410
432
}
411
433
412
434
#[ test]
413
435
fn parse_workout_individual_steps ( ) {
414
436
let data = include_bytes ! ( "../tests/fixtures/WorkoutIndividualSteps.fit" ) . to_vec ( ) ;
415
437
let fit_data = from_bytes ( & data) . unwrap ( ) ;
416
438
assert_eq ! ( fit_data. len( ) , 6 ) ;
439
+ for record in fit_data {
440
+ assert ! ( Message :: parse( record) . is_ok( ) ) ;
441
+ }
417
442
}
418
443
419
444
#[ test]
420
445
fn parse_workout_repeat_greater_than_step ( ) {
421
446
let data = include_bytes ! ( "../tests/fixtures/WorkoutRepeatGreaterThanStep.fit" ) . to_vec ( ) ;
422
447
let fit_data = from_bytes ( & data) . unwrap ( ) ;
423
448
assert_eq ! ( fit_data. len( ) , 7 ) ;
449
+ for record in fit_data {
450
+ assert ! ( Message :: parse( record) . is_ok( ) ) ;
451
+ }
424
452
}
425
453
426
454
#[ test]
427
455
fn parse_workout_repeat_steps ( ) {
428
456
let data = include_bytes ! ( "../tests/fixtures/WorkoutRepeatSteps.fit" ) . to_vec ( ) ;
429
457
let fit_data = from_bytes ( & data) . unwrap ( ) ;
430
458
assert_eq ! ( fit_data. len( ) , 7 ) ;
459
+ for record in fit_data {
460
+ assert ! ( Message :: parse( record) . is_ok( ) ) ;
461
+ }
431
462
}
432
463
433
464
#[ test]
@@ -437,6 +468,13 @@ mod tests {
437
468
let data = include_bytes ! ( "../tests/fixtures/garmin-fenix-5-bike.fit" ) . to_vec ( ) ;
438
469
let fit_data = from_bytes ( & data) . unwrap ( ) ;
439
470
assert_eq ! ( fit_data. len( ) , 143 ) ;
471
+ let mut options = MessageParseOptions :: default ( ) ;
472
+ options. ignore_unexpected_fields = true ;
473
+ for record in fit_data {
474
+ if MesgNum :: is_named_variant ( record. kind ( ) . as_i64 ( ) ) {
475
+ assert ! ( Message :: parse_with_options( record, options) . is_ok( ) ) ;
476
+ }
477
+ }
440
478
}
441
479
442
480
#[ test]
@@ -445,6 +483,13 @@ mod tests {
445
483
let data = include_bytes ! ( "../tests/fixtures/sample_mulitple_header.fit" ) . to_vec ( ) ;
446
484
let fit_data = from_bytes ( & data) . unwrap ( ) ;
447
485
assert_eq ! ( fit_data. len( ) , 3023 ) ;
486
+ let mut options = MessageParseOptions :: default ( ) ;
487
+ options. ignore_unexpected_fields = true ;
488
+ for record in fit_data {
489
+ if MesgNum :: is_named_variant ( record. kind ( ) . as_i64 ( ) ) {
490
+ assert ! ( Message :: parse_with_options( record, options) . is_ok( ) ) ;
491
+ }
492
+ }
448
493
}
449
494
450
495
#[ test]
0 commit comments