about summary refs log tree commit diff
path: root/src/libcoretest
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2015-05-01 16:42:19 +0000
committerbors <bors@rust-lang.org>2015-05-01 16:42:19 +0000
commit613109db1b7ee95cc55d2e9710c1d54836504271 (patch)
tree0bd255897121f13daf65d601641e4dec1167ceca /src/libcoretest
parent1320c293c16dd61093a9b7e8e3c441df6b59ea9e (diff)
parent2a8fc9b02cb77664551712ecc5ac491c91238e99 (diff)
downloadrust-613109db1b7ee95cc55d2e9710c1d54836504271.tar.gz
rust-613109db1b7ee95cc55d2e9710c1d54836504271.zip
Auto merge of #24720 - critiqjo:stepby-sizehint, r=alexcrichton
`Iterator::size_hint` can be easily implemented for `StepBy`.
#23708
Diffstat (limited to 'src/libcoretest')
-rw-r--r--src/libcoretest/iter.rs14
1 files changed, 13 insertions, 1 deletions
diff --git a/src/libcoretest/iter.rs b/src/libcoretest/iter.rs
index bb36630f168..95a6236e9c3 100644
--- a/src/libcoretest/iter.rs
+++ b/src/libcoretest/iter.rs
@@ -11,7 +11,7 @@
 use core::iter::*;
 use core::iter::order::*;
 use core::iter::MinMaxResult::*;
-use core::isize;
+use core::{i8, i16, isize};
 use core::usize;
 use core::cmp;
 
@@ -786,6 +786,18 @@ fn test_range_step() {
     assert_eq!((200..255).step_by(50).collect::<Vec<u8>>(), [200, 250]);
     assert_eq!((200..-5).step_by(1).collect::<Vec<isize>>(), []);
     assert_eq!((200..200).step_by(1).collect::<Vec<isize>>(), []);
+
+    assert_eq!((0..20).step_by(1).size_hint(), (20, Some(20)));
+    assert_eq!((0..20).step_by(21).size_hint(), (1, Some(1)));
+    assert_eq!((0..20).step_by(5).size_hint(), (4, Some(4)));
+    assert_eq!((20..0).step_by(-5).size_hint(), (4, Some(4)));
+    assert_eq!((20..0).step_by(-6).size_hint(), (4, Some(4)));
+    assert_eq!((20..-5).step_by(1).size_hint(), (0, Some(0)));
+    assert_eq!((20..20).step_by(1).size_hint(), (0, Some(0)));
+    assert_eq!((0..1).step_by(0).size_hint(), (0, None));
+    assert_eq!((i8::MAX..i8::MIN).step_by(i8::MIN).size_hint(), (2, Some(2)));
+    assert_eq!((i16::MIN..i16::MAX).step_by(i16::MAX).size_hint(), (3, Some(3)));
+    assert_eq!((isize::MIN..isize::MAX).step_by(1).size_hint(), (usize::MAX, Some(usize::MAX)));
 }
 
 #[test]