Skip to content

Commit 3d389f2

Browse files
committed
Test the size_hint of empty ranges too
1 parent 01162d8 commit 3d389f2

File tree

1 file changed

+12
-0
lines changed

1 file changed

+12
-0
lines changed

src/libcore/tests/iter.rs

+12
Original file line numberDiff line numberDiff line change
@@ -1804,20 +1804,24 @@ fn test_range_inclusive_folds() {
18041804
#[test]
18051805
fn test_range_size_hint() {
18061806
use core::usize::MAX as UMAX;
1807+
assert_eq!((0..0usize).size_hint(), (0, Some(0)));
18071808
assert_eq!((0..100usize).size_hint(), (100, Some(100)));
18081809
assert_eq!((0..UMAX).size_hint(), (UMAX, Some(UMAX)));
18091810

18101811
let umax = u128::try_from(UMAX).unwrap();
1812+
assert_eq!((0..0u128).size_hint(), (0, Some(0)));
18111813
assert_eq!((0..100u128).size_hint(), (100, Some(100)));
18121814
assert_eq!((0..umax).size_hint(), (UMAX, Some(UMAX)));
18131815
assert_eq!((0..umax + 1).size_hint(), (UMAX, None));
18141816

18151817
use core::isize::{MAX as IMAX, MIN as IMIN};
1818+
assert_eq!((0..0isize).size_hint(), (0, Some(0)));
18161819
assert_eq!((-100..100isize).size_hint(), (200, Some(200)));
18171820
assert_eq!((IMIN..IMAX).size_hint(), (UMAX, Some(UMAX)));
18181821

18191822
let imin = i128::try_from(IMIN).unwrap();
18201823
let imax = i128::try_from(IMAX).unwrap();
1824+
assert_eq!((0..0i128).size_hint(), (0, Some(0)));
18211825
assert_eq!((-100..100i128).size_hint(), (200, Some(200)));
18221826
assert_eq!((imin..imax).size_hint(), (UMAX, Some(UMAX)));
18231827
assert_eq!((imin..imax + 1).size_hint(), (UMAX, None));
@@ -1826,23 +1830,31 @@ fn test_range_size_hint() {
18261830
#[test]
18271831
fn test_range_inclusive_size_hint() {
18281832
use core::usize::MAX as UMAX;
1833+
assert_eq!((1..=0usize).size_hint(), (0, Some(0)));
1834+
assert_eq!((0..=0usize).size_hint(), (1, Some(1)));
18291835
assert_eq!((0..=100usize).size_hint(), (101, Some(101)));
18301836
assert_eq!((0..=UMAX - 1).size_hint(), (UMAX, Some(UMAX)));
18311837
assert_eq!((0..=UMAX).size_hint(), (UMAX, None));
18321838

18331839
let umax = u128::try_from(UMAX).unwrap();
1840+
assert_eq!((1..=0u128).size_hint(), (0, Some(0)));
1841+
assert_eq!((0..=0u128).size_hint(), (1, Some(1)));
18341842
assert_eq!((0..=100u128).size_hint(), (101, Some(101)));
18351843
assert_eq!((0..=umax - 1).size_hint(), (UMAX, Some(UMAX)));
18361844
assert_eq!((0..=umax).size_hint(), (UMAX, None));
18371845
assert_eq!((0..=umax + 1).size_hint(), (UMAX, None));
18381846

18391847
use core::isize::{MAX as IMAX, MIN as IMIN};
1848+
assert_eq!((0..=-1isize).size_hint(), (0, Some(0)));
1849+
assert_eq!((0..=0isize).size_hint(), (1, Some(1)));
18401850
assert_eq!((-100..=100isize).size_hint(), (201, Some(201)));
18411851
assert_eq!((IMIN..=IMAX - 1).size_hint(), (UMAX, Some(UMAX)));
18421852
assert_eq!((IMIN..=IMAX).size_hint(), (UMAX, None));
18431853

18441854
let imin = i128::try_from(IMIN).unwrap();
18451855
let imax = i128::try_from(IMAX).unwrap();
1856+
assert_eq!((0..=-1i128).size_hint(), (0, Some(0)));
1857+
assert_eq!((0..=0i128).size_hint(), (1, Some(1)));
18461858
assert_eq!((-100..=100i128).size_hint(), (201, Some(201)));
18471859
assert_eq!((imin..=imax - 1).size_hint(), (UMAX, Some(UMAX)));
18481860
assert_eq!((imin..=imax).size_hint(), (UMAX, None));

0 commit comments

Comments
 (0)