@@ -122,6 +122,48 @@ fn test_partition_point() {
122
122
assert_eq ! ( b. partition_point( |& x| x < 8 ) , 5 ) ;
123
123
}
124
124
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
+
125
167
#[ test]
126
168
fn test_iterator_nth ( ) {
127
169
let v: & [ _ ] = & [ 0 , 1 , 2 , 3 , 4 ] ;
0 commit comments