@@ -178,6 +178,43 @@ fn test_range_small() {
178
178
assert_eq ! ( j, size - 2 ) ;
179
179
}
180
180
181
+ #[ test]
182
+ fn test_range_inclusive ( ) {
183
+ let size = 500 ;
184
+
185
+ let map: BTreeMap < _ , _ > = ( 0 ...size) . map ( |i| ( i, i) ) . collect ( ) ;
186
+
187
+ fn check < ' a , L , R > ( lhs : L , rhs : R )
188
+ where L : IntoIterator < Item =( & ' a i32 , & ' a i32 ) > ,
189
+ R : IntoIterator < Item =( & ' a i32 , & ' a i32 ) > ,
190
+ {
191
+ let lhs: Vec < _ > = lhs. into_iter ( ) . collect ( ) ;
192
+ let rhs: Vec < _ > = rhs. into_iter ( ) . collect ( ) ;
193
+ assert_eq ! ( lhs, rhs) ;
194
+ }
195
+
196
+ check ( map. range ( size + 1 ...size + 1 ) , vec ! [ ] ) ;
197
+ check ( map. range ( size...size) , vec ! [ ( & size, & size) ] ) ;
198
+ check ( map. range ( size...size + 1 ) , vec ! [ ( & size, & size) ] ) ;
199
+ check ( map. range ( 0 ...0 ) , vec ! [ ( & 0 , & 0 ) ] ) ;
200
+ check ( map. range ( 0 ...size - 1 ) , map. range ( ..size) ) ;
201
+ check ( map. range ( -1 ...-1 ) , vec ! [ ] ) ;
202
+ check ( map. range ( -1 ...size) , map. range ( ..) ) ;
203
+ check ( map. range ( ... size ) , map. range ( ..) ) ;
204
+ check ( map. range ( ... 200 ) , map. range ( ..201 ) ) ;
205
+ check ( map. range ( 5 ...8 ) , vec ! [ ( & 5 , & 5 ) , ( & 6 , & 6 ) , ( & 7 , & 7 ) , ( & 8 , & 8 ) ] ) ;
206
+ check ( map. range ( -1 ...0 ) , vec ! [ ( & 0 , & 0 ) ] ) ;
207
+ check ( map. range ( -1 ...2 ) , vec ! [ ( & 0 , & 0 ) , ( & 1 , & 1 ) , ( & 2 , & 2 ) ] ) ;
208
+ }
209
+
210
+ #[ test]
211
+ fn test_range_inclusive_max_value ( ) {
212
+ let max = :: std:: usize:: MAX ;
213
+ let map: BTreeMap < _ , _ > = vec ! [ ( max, 0 ) ] . into_iter ( ) . collect ( ) ;
214
+
215
+ assert_eq ! ( map. range( max...max) . collect:: <Vec <_>>( ) , & [ ( & max, & 0 ) ] ) ;
216
+ }
217
+
181
218
#[ test]
182
219
fn test_range_equal_empty_cases ( ) {
183
220
let map: BTreeMap < _ , _ > = ( 0 ..5 ) . map ( |i| ( i, i) ) . collect ( ) ;
0 commit comments