@@ -122,6 +122,48 @@ fn test_partition_point() {
122122 assert_eq ! ( b. partition_point( |& x| x < 8 ) , 5 ) ;
123123}
124124
125+ #[ test]
126+ fn test_iterator_advance_by ( ) {
127+ let v = & [ 0 , 1 , 2 , 3 , 4 ] ;
128+
129+ for i in 0 ..=v. len ( ) {
130+ let mut iter = v. iter ( ) ;
131+ iter. advance_by ( i) . unwrap ( ) ;
132+ assert_eq ! ( iter. as_slice( ) , & v[ i..] ) ;
133+ }
134+
135+ let mut iter = v. iter ( ) ;
136+ assert_eq ! ( iter. advance_by( v. len( ) + 1 ) , Err ( v. len( ) ) ) ;
137+ assert_eq ! ( iter. as_slice( ) , & [ ] ) ;
138+
139+ let mut iter = v. iter ( ) ;
140+ iter. advance_by ( 3 ) . unwrap ( ) ;
141+ assert_eq ! ( iter. as_slice( ) , & v[ 3 ..] ) ;
142+ iter. advance_by ( 2 ) . unwrap ( ) ;
143+ assert_eq ! ( iter. as_slice( ) , & [ ] ) ;
144+ }
145+
146+ #[ test]
147+ fn test_iterator_advance_back_by ( ) {
148+ let v = & [ 0 , 1 , 2 , 3 , 4 ] ;
149+
150+ for i in 0 ..=v. len ( ) {
151+ let mut iter = v. iter ( ) ;
152+ iter. advance_back_by ( i) . unwrap ( ) ;
153+ assert_eq ! ( iter. as_slice( ) , & v[ ..v. len( ) - i] ) ;
154+ }
155+
156+ let mut iter = v. iter ( ) ;
157+ assert_eq ! ( iter. advance_back_by( v. len( ) + 1 ) , Err ( v. len( ) ) ) ;
158+ assert_eq ! ( iter. as_slice( ) , & [ ] ) ;
159+
160+ let mut iter = v. iter ( ) ;
161+ iter. advance_back_by ( 3 ) . unwrap ( ) ;
162+ assert_eq ! ( iter. as_slice( ) , & v[ ..v. len( ) - 3 ] ) ;
163+ iter. advance_back_by ( 2 ) . unwrap ( ) ;
164+ assert_eq ! ( iter. as_slice( ) , & [ ] ) ;
165+ }
166+
125167#[ test]
126168fn test_iterator_nth ( ) {
127169 let v: & [ _ ] = & [ 0 , 1 , 2 , 3 , 4 ] ;
0 commit comments