@@ -134,6 +134,48 @@ fn test_partition_point() {
134
134
assert_eq ! ( b. partition_point( |& x| x < 8 ) , 5 ) ;
135
135
}
136
136
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
+
137
179
#[ test]
138
180
fn test_iterator_nth ( ) {
139
181
let v: & [ _ ] = & [ 0 , 1 , 2 , 3 , 4 ] ;
0 commit comments