Skip to content

Commit bcacfe1

Browse files
committed
Add tests
1 parent c5d6a0d commit bcacfe1

File tree

1 file changed

+66
-0
lines changed

1 file changed

+66
-0
lines changed

library/core/tests/iter.rs

+66
Original file line numberDiff line numberDiff line change
@@ -142,6 +142,72 @@ fn test_iterator_chain() {
142142
assert_eq!(i, expected.len());
143143
}
144144

145+
#[test]
146+
fn test_iterator_chain_advance_by() {
147+
fn test_chain(xs: &[i32], ys: &[i32]) {
148+
let len = xs.len() + ys.len();
149+
150+
for i in 0..xs.len() {
151+
let mut iter = xs.iter().chain(ys);
152+
iter.advance_by(i).unwrap();
153+
assert_eq!(iter.next(), Some(&xs[i]));
154+
assert_eq!(iter.advance_by(100), Err(len - i - 1));
155+
}
156+
157+
for i in 0..ys.len() {
158+
let mut iter = xs.iter().chain(ys);
159+
iter.advance_by(xs.len() + i).unwrap();
160+
assert_eq!(iter.next(), Some(&ys[i]));
161+
assert_eq!(iter.advance_by(100), Err(ys.len() - i - 1));
162+
}
163+
164+
let mut iter = xs.iter().chain(ys);
165+
iter.advance_by(len).unwrap();
166+
assert_eq!(iter.next(), None);
167+
168+
let mut iter = xs.iter().chain(ys);
169+
assert_eq!(iter.advance_by(len + 1), Err(len));
170+
}
171+
172+
test_chain(&[], &[]);
173+
test_chain(&[], &[0, 1, 2, 3, 4, 5]);
174+
test_chain(&[0, 1, 2, 3, 4, 5], &[]);
175+
test_chain(&[0, 1, 2, 3, 4, 5], &[30, 40, 50, 60]);
176+
}
177+
178+
#[test]
179+
fn test_iterator_chain_advance_back_by() {
180+
fn test_chain(xs: &[i32], ys: &[i32]) {
181+
let len = xs.len() + ys.len();
182+
183+
for i in 0..ys.len() {
184+
let mut iter = xs.iter().chain(ys);
185+
iter.advance_back_by(i).unwrap();
186+
assert_eq!(iter.next_back(), Some(&ys[ys.len() - i - 1]));
187+
assert_eq!(iter.advance_back_by(100), Err(len - i - 1));
188+
}
189+
190+
for i in 0..xs.len() {
191+
let mut iter = xs.iter().chain(ys);
192+
iter.advance_back_by(ys.len() + i).unwrap();
193+
assert_eq!(iter.next_back(), Some(&xs[xs.len() - i - 1]));
194+
assert_eq!(iter.advance_back_by(100), Err(xs.len() - i - 1));
195+
}
196+
197+
let mut iter = xs.iter().chain(ys);
198+
iter.advance_back_by(len).unwrap();
199+
assert_eq!(iter.next_back(), None);
200+
201+
let mut iter = xs.iter().chain(ys);
202+
assert_eq!(iter.advance_back_by(len + 1), Err(len));
203+
}
204+
205+
test_chain(&[], &[]);
206+
test_chain(&[], &[0, 1, 2, 3, 4, 5]);
207+
test_chain(&[0, 1, 2, 3, 4, 5], &[]);
208+
test_chain(&[0, 1, 2, 3, 4, 5], &[30, 40, 50, 60]);
209+
}
210+
145211
#[test]
146212
fn test_iterator_chain_nth() {
147213
let xs = [0, 1, 2, 3, 4, 5];

0 commit comments

Comments
 (0)