@@ -134,6 +134,48 @@ fn test_partition_point() {
134134 assert_eq ! ( b. partition_point( |& x| x < 8 ) , 5 ) ;
135135}
136136
137+ #[ test]
138+ fn test_iterator_advance_by ( ) {
139+ let v = & [ 0 , 1 , 2 , 3 , 4 ] ;
140+
141+ for i in 0 ..=v. len ( ) {
142+ let mut iter = v. iter ( ) ;
143+ iter. advance_by ( i) . unwrap ( ) ;
144+ assert_eq ! ( iter. as_slice( ) , & v[ i..] ) ;
145+ }
146+
147+ let mut iter = v. iter ( ) ;
148+ assert_eq ! ( iter. advance_by( v. len( ) + 1 ) , Err ( v. len( ) ) ) ;
149+ assert_eq ! ( iter. as_slice( ) , & [ ] ) ;
150+
151+ let mut iter = v. iter ( ) ;
152+ iter. advance_by ( 3 ) . unwrap ( ) ;
153+ assert_eq ! ( iter. as_slice( ) , & v[ 3 ..] ) ;
154+ iter. advance_by ( 2 ) . unwrap ( ) ;
155+ assert_eq ! ( iter. as_slice( ) , & [ ] ) ;
156+ }
157+
158+ #[ test]
159+ fn test_iterator_advance_back_by ( ) {
160+ let v = & [ 0 , 1 , 2 , 3 , 4 ] ;
161+
162+ for i in 0 ..=v. len ( ) {
163+ let mut iter = v. iter ( ) ;
164+ iter. advance_back_by ( i) . unwrap ( ) ;
165+ assert_eq ! ( iter. as_slice( ) , & v[ ..v. len( ) - i] ) ;
166+ }
167+
168+ let mut iter = v. iter ( ) ;
169+ assert_eq ! ( iter. advance_back_by( v. len( ) + 1 ) , Err ( v. len( ) ) ) ;
170+ assert_eq ! ( iter. as_slice( ) , & [ ] ) ;
171+
172+ let mut iter = v. iter ( ) ;
173+ iter. advance_back_by ( 3 ) . unwrap ( ) ;
174+ assert_eq ! ( iter. as_slice( ) , & v[ ..v. len( ) - 3 ] ) ;
175+ iter. advance_back_by ( 2 ) . unwrap ( ) ;
176+ assert_eq ! ( iter. as_slice( ) , & [ ] ) ;
177+ }
178+
137179#[ test]
138180fn test_iterator_nth ( ) {
139181 let v: & [ _ ] = & [ 0 , 1 , 2 , 3 , 4 ] ;
0 commit comments