@@ -1473,6 +1473,66 @@ fn test_iterator_rev_nth() {
14731473 assert_eq ! ( v. iter( ) . rev( ) . nth( v. len( ) ) , None ) ;
14741474}
14751475
1476+ #[ test]
1477+ fn test_iterator_advance_by ( ) {
1478+ let v: & [ _ ] = & [ 0 , 1 , 2 , 3 , 4 ] ;
1479+
1480+ for i in 0 ..v. len ( ) {
1481+ let mut iter = v. iter ( ) ;
1482+ assert_eq ! ( iter. advance_by( i) , Ok ( ( ) ) ) ;
1483+ assert_eq ! ( iter. next( ) . unwrap( ) , & v[ i] ) ;
1484+ assert_eq ! ( iter. advance_by( 100 ) , Err ( v. len( ) - 1 - i) ) ;
1485+ }
1486+
1487+ assert_eq ! ( v. iter( ) . advance_by( v. len( ) ) , Ok ( ( ) ) ) ;
1488+ assert_eq ! ( v. iter( ) . advance_by( 100 ) , Err ( v. len( ) ) ) ;
1489+ }
1490+
1491+ #[ test]
1492+ fn test_iterator_advance_back_by ( ) {
1493+ let v: & [ _ ] = & [ 0 , 1 , 2 , 3 , 4 ] ;
1494+
1495+ for i in 0 ..v. len ( ) {
1496+ let mut iter = v. iter ( ) ;
1497+ assert_eq ! ( iter. advance_back_by( i) , Ok ( ( ) ) ) ;
1498+ assert_eq ! ( iter. next_back( ) . unwrap( ) , & v[ v. len( ) - 1 - i] ) ;
1499+ assert_eq ! ( iter. advance_back_by( 100 ) , Err ( v. len( ) - 1 - i) ) ;
1500+ }
1501+
1502+ assert_eq ! ( v. iter( ) . advance_back_by( v. len( ) ) , Ok ( ( ) ) ) ;
1503+ assert_eq ! ( v. iter( ) . advance_back_by( 100 ) , Err ( v. len( ) ) ) ;
1504+ }
1505+
1506+ #[ test]
1507+ fn test_iterator_rev_advance_by ( ) {
1508+ let v: & [ _ ] = & [ 0 , 1 , 2 , 3 , 4 ] ;
1509+
1510+ for i in 0 ..v. len ( ) {
1511+ let mut iter = v. iter ( ) . rev ( ) ;
1512+ assert_eq ! ( iter. advance_by( i) , Ok ( ( ) ) ) ;
1513+ assert_eq ! ( iter. next( ) . unwrap( ) , & v[ v. len( ) - 1 - i] ) ;
1514+ assert_eq ! ( iter. advance_by( 100 ) , Err ( v. len( ) - 1 - i) ) ;
1515+ }
1516+
1517+ assert_eq ! ( v. iter( ) . rev( ) . advance_by( v. len( ) ) , Ok ( ( ) ) ) ;
1518+ assert_eq ! ( v. iter( ) . rev( ) . advance_by( 100 ) , Err ( v. len( ) ) ) ;
1519+ }
1520+
1521+ #[ test]
1522+ fn test_iterator_rev_advance_back_by ( ) {
1523+ let v: & [ _ ] = & [ 0 , 1 , 2 , 3 , 4 ] ;
1524+
1525+ for i in 0 ..v. len ( ) {
1526+ let mut iter = v. iter ( ) . rev ( ) ;
1527+ assert_eq ! ( iter. advance_back_by( i) , Ok ( ( ) ) ) ;
1528+ assert_eq ! ( iter. next_back( ) . unwrap( ) , & v[ i] ) ;
1529+ assert_eq ! ( iter. advance_back_by( 100 ) , Err ( v. len( ) - 1 - i) ) ;
1530+ }
1531+
1532+ assert_eq ! ( v. iter( ) . rev( ) . advance_back_by( v. len( ) ) , Ok ( ( ) ) ) ;
1533+ assert_eq ! ( v. iter( ) . rev( ) . advance_back_by( 100 ) , Err ( v. len( ) ) ) ;
1534+ }
1535+
14761536#[ test]
14771537fn test_iterator_last ( ) {
14781538 let v: & [ _ ] = & [ 0 , 1 , 2 , 3 , 4 ] ;
0 commit comments