@@ -631,7 +631,7 @@ mod tests {
631
631
632
632
#[ test]
633
633
#[ cfg( feature = "step_trait" ) ]
634
- fn virtaddr_step ( ) {
634
+ fn virtaddr_step_forward ( ) {
635
635
assert_eq ! ( Step :: forward( VirtAddr ( 0 ) , 0 ) , VirtAddr ( 0 ) ) ;
636
636
assert_eq ! ( Step :: forward( VirtAddr ( 0 ) , 1 ) , VirtAddr ( 1 ) ) ;
637
637
assert_eq ! (
@@ -646,7 +646,32 @@ mod tests {
646
646
Step :: forward_checked( VirtAddr ( 0xffff_ffff_ffff_ffff ) , 1 ) ,
647
647
None
648
648
) ;
649
+ assert_eq ! (
650
+ Step :: forward( VirtAddr ( 0x7fff_ffff_ffff ) , 0x1234_5678_9abd ) ,
651
+ VirtAddr ( 0xffff_9234_5678_9abc )
652
+ ) ;
653
+ assert_eq ! (
654
+ Step :: forward( VirtAddr ( 0x7fff_ffff_ffff ) , 0x8000_0000_0000 ) ,
655
+ VirtAddr ( 0xffff_ffff_ffff_ffff )
656
+ ) ;
657
+ assert_eq ! (
658
+ Step :: forward( VirtAddr ( 0x7fff_ffff_ff00 ) , 0x8000_0000_00ff ) ,
659
+ VirtAddr ( 0xffff_ffff_ffff_ffff )
660
+ ) ;
661
+ assert_eq ! (
662
+ Step :: forward_checked( VirtAddr ( 0x7fff_ffff_ff00 ) , 0x8000_0000_0100 ) ,
663
+ None
664
+ ) ;
665
+ assert_eq ! (
666
+ Step :: forward_checked( VirtAddr ( 0x7fff_ffff_ffff ) , 0x8000_0000_0001 ) ,
667
+ None
668
+ ) ;
669
+ }
670
+
649
671
672
+ #[ test]
673
+ #[ cfg( feature = "step_trait" ) ]
674
+ fn virtaddr_step_backward ( ) {
650
675
assert_eq ! ( Step :: backward( VirtAddr ( 0 ) , 0 ) , VirtAddr ( 0 ) ) ;
651
676
assert_eq ! ( Step :: backward_checked( VirtAddr ( 0 ) , 1 ) , None ) ;
652
677
assert_eq ! ( Step :: backward( VirtAddr ( 1 ) , 1 ) , VirtAddr ( 0 ) ) ;
@@ -658,7 +683,27 @@ mod tests {
658
683
Step :: backward( VirtAddr ( 0xffff_8000_0000_0001 ) , 1 ) ,
659
684
VirtAddr ( 0xffff_8000_0000_0000 )
660
685
) ;
686
+ assert_eq ! (
687
+ Step :: backward( VirtAddr ( 0xffff_9234_5678_9abc ) , 0x1234_5678_9abd ) ,
688
+ VirtAddr ( 0x7fff_ffff_ffff )
689
+ ) ;
690
+ assert_eq ! (
691
+ Step :: backward( VirtAddr ( 0xffff_8000_0000_0000 ) , 0x8000_0000_0000 ) ,
692
+ VirtAddr ( 0 )
693
+ ) ;
694
+ assert_eq ! (
695
+ Step :: backward( VirtAddr ( 0xffff_8000_0000_0000 ) , 0x7fff_ffff_ff01 ) ,
696
+ VirtAddr ( 0xff )
697
+ ) ;
698
+ assert_eq ! (
699
+ Step :: backward_checked( VirtAddr ( 0xffff_8000_0000_0000 ) , 0x8000_0000_0001 ) ,
700
+ None
701
+ ) ;
702
+ }
661
703
704
+ #[ test]
705
+ #[ cfg( feature = "step_trait" ) ]
706
+ fn virtaddr_steps_between ( ) {
662
707
assert_eq ! ( Step :: steps_between( & VirtAddr ( 0 ) , & VirtAddr ( 0 ) ) , Some ( 0 ) ) ;
663
708
assert_eq ! ( Step :: steps_between( & VirtAddr ( 0 ) , & VirtAddr ( 1 ) ) , Some ( 1 ) ) ;
664
709
assert_eq ! ( Step :: steps_between( & VirtAddr ( 1 ) , & VirtAddr ( 0 ) ) , None ) ;
0 commit comments