@@ -178,6 +178,43 @@ fn test_range_small() {
178178 assert_eq ! ( j, size - 2 ) ;
179179}
180180
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+
181218#[ test]
182219fn test_range_equal_empty_cases ( ) {
183220 let map: BTreeMap < _ , _ > = ( 0 ..5 ) . map ( |i| ( i, i) ) . collect ( ) ;
0 commit comments