@@ -403,102 +403,69 @@ mod tests {
403
403
ArpError :: Operation
404
404
) ;
405
405
406
- // TODO: The following test code is way more verbose than it should've been. Make it
407
- // prettier at some point.
408
-
409
- // Let's write a valid request.
410
- EthIPv4ArpFrame :: write_raw (
411
- & mut a[ ..ETH_IPV4_FRAME_LEN ] ,
412
- HTYPE_ETHERNET ,
413
- ETHERTYPE_IPV4 ,
414
- MAC_ADDR_LEN ,
415
- IPV4_ADDR_LEN ,
416
- OPER_REQUEST ,
417
- sha,
418
- spa,
419
- tha,
420
- tpa,
421
- )
422
- . unwrap ( ) ;
423
- EthIPv4ArpFrame :: request_from_bytes ( & a[ ..ETH_IPV4_FRAME_LEN ] ) . unwrap ( ) ;
424
-
425
- // Now we start writing invalid requests. We've already tried with an invalid operation.
426
-
427
- // Invalid htype.
428
- EthIPv4ArpFrame :: write_raw (
429
- & mut a[ ..ETH_IPV4_FRAME_LEN ] ,
430
- HTYPE_ETHERNET + 1 ,
431
- ETHERTYPE_IPV4 ,
432
- MAC_ADDR_LEN ,
433
- IPV4_ADDR_LEN ,
434
- OPER_REQUEST ,
435
- sha,
436
- spa,
437
- tha,
438
- tpa,
439
- )
440
- . unwrap ( ) ;
441
- assert_eq ! (
442
- EthIPv4ArpFrame :: request_from_bytes( & a[ ..ETH_IPV4_FRAME_LEN ] ) . unwrap_err( ) ,
443
- ArpError :: HType
444
- ) ;
445
-
446
- // Invalid ptype.
447
- EthIPv4ArpFrame :: write_raw (
448
- & mut a[ ..ETH_IPV4_FRAME_LEN ] ,
449
- HTYPE_ETHERNET ,
450
- ETHERTYPE_IPV4 + 1 ,
451
- MAC_ADDR_LEN ,
452
- IPV4_ADDR_LEN ,
453
- OPER_REQUEST ,
454
- sha,
455
- spa,
456
- tha,
457
- tpa,
458
- )
459
- . unwrap ( ) ;
460
- assert_eq ! (
461
- EthIPv4ArpFrame :: request_from_bytes( & a[ ..ETH_IPV4_FRAME_LEN ] ) . unwrap_err( ) ,
462
- ArpError :: PType
463
- ) ;
464
-
465
- // Invalid hlen.
466
- EthIPv4ArpFrame :: write_raw (
467
- & mut a[ ..ETH_IPV4_FRAME_LEN ] ,
468
- HTYPE_ETHERNET ,
469
- ETHERTYPE_IPV4 ,
470
- MAC_ADDR_LEN + 1 ,
471
- IPV4_ADDR_LEN ,
472
- OPER_REQUEST ,
473
- sha,
474
- spa,
475
- tha,
476
- tpa,
477
- )
478
- . unwrap ( ) ;
479
- assert_eq ! (
480
- EthIPv4ArpFrame :: request_from_bytes( & a[ ..ETH_IPV4_FRAME_LEN ] ) . unwrap_err( ) ,
481
- ArpError :: HLen
482
- ) ;
483
-
484
- // Invalid plen.
485
- EthIPv4ArpFrame :: write_raw (
486
- & mut a[ ..ETH_IPV4_FRAME_LEN ] ,
487
- HTYPE_ETHERNET ,
488
- ETHERTYPE_IPV4 ,
489
- MAC_ADDR_LEN ,
490
- IPV4_ADDR_LEN + 1 ,
491
- OPER_REQUEST ,
492
- sha,
493
- spa,
494
- tha,
495
- tpa,
496
- )
497
- . unwrap ( ) ;
498
- assert_eq ! (
499
- EthIPv4ArpFrame :: request_from_bytes( & a[ ..ETH_IPV4_FRAME_LEN ] ) . unwrap_err( ) ,
500
- ArpError :: PLen
501
- ) ;
406
+ // Various requests
407
+ let requests = [
408
+ (
409
+ HTYPE_ETHERNET ,
410
+ ETHERTYPE_IPV4 ,
411
+ MAC_ADDR_LEN ,
412
+ IPV4_ADDR_LEN ,
413
+ None ,
414
+ ) , // Valid request
415
+ (
416
+ HTYPE_ETHERNET + 1 ,
417
+ ETHERTYPE_IPV4 ,
418
+ MAC_ADDR_LEN ,
419
+ IPV4_ADDR_LEN ,
420
+ Some ( ArpError :: HType ) ,
421
+ ) , // Invalid htype
422
+ (
423
+ HTYPE_ETHERNET ,
424
+ ETHERTYPE_IPV4 + 1 ,
425
+ MAC_ADDR_LEN ,
426
+ IPV4_ADDR_LEN ,
427
+ Some ( ArpError :: PType ) ,
428
+ ) , // Invalid ptype
429
+ (
430
+ HTYPE_ETHERNET ,
431
+ ETHERTYPE_IPV4 ,
432
+ MAC_ADDR_LEN + 1 ,
433
+ IPV4_ADDR_LEN ,
434
+ Some ( ArpError :: HLen ) ,
435
+ ) , // Invalid hlen
436
+ (
437
+ HTYPE_ETHERNET ,
438
+ ETHERTYPE_IPV4 ,
439
+ MAC_ADDR_LEN ,
440
+ IPV4_ADDR_LEN + 1 ,
441
+ Some ( ArpError :: PLen ) ,
442
+ ) , // Invalid plen
443
+ ] ;
444
+
445
+ for ( htype, ptype, hlen, plen, err) in requests. iter ( ) {
446
+ EthIPv4ArpFrame :: write_raw (
447
+ & mut a[ ..ETH_IPV4_FRAME_LEN ] ,
448
+ * htype,
449
+ * ptype,
450
+ * hlen,
451
+ * plen,
452
+ OPER_REQUEST ,
453
+ sha,
454
+ spa,
455
+ tha,
456
+ tpa,
457
+ )
458
+ . unwrap ( ) ;
459
+ match err {
460
+ None => {
461
+ EthIPv4ArpFrame :: request_from_bytes ( & a[ ..ETH_IPV4_FRAME_LEN ] ) . unwrap ( ) ;
462
+ }
463
+ Some ( arp_error) => assert_eq ! (
464
+ EthIPv4ArpFrame :: request_from_bytes( & a[ ..ETH_IPV4_FRAME_LEN ] ) . unwrap_err( ) ,
465
+ * arp_error
466
+ ) ,
467
+ }
468
+ }
502
469
}
503
470
504
471
#[ test]
0 commit comments