Skip to content

Commit 2db5dd1

Browse files
committed
Test Iterator adapter overrides.
1 parent 306f0d0 commit 2db5dd1

File tree

1 file changed

+220
-0
lines changed

1 file changed

+220
-0
lines changed

src/libcoretest/iter.rs

+220
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,41 @@ fn test_iterator_chain() {
100100
assert_eq!(i, expected.len());
101101
}
102102

103+
#[test]
104+
fn test_iterator_chain_nth() {
105+
let xs = [0, 1, 2, 3, 4, 5];
106+
let ys = [30, 40, 50, 60];
107+
let zs = [];
108+
let expected = [0, 1, 2, 3, 4, 5, 30, 40, 50, 60];
109+
for (i, &x) in expected.iter().enumerate() {
110+
assert_eq!(x, xs.iter().chain(ys.iter()).nth(i));
111+
}
112+
assert_eq!(zs.iter().chain(xs.iter()).nth(0), Some(&0));
113+
114+
let mut it = xs.iter().chain(zs.iter());
115+
assert_eq!(it.nth(5), Some(&5));
116+
assert_eq!(it.next(), None);
117+
}
118+
119+
#[test]
120+
fn test_iterator_chain_last() {
121+
let xs = [0, 1, 2, 3, 4, 5];
122+
let ys = [30, 40, 50, 60];
123+
let zs = [];
124+
assert_eq!(xs.iter().chain(ys.iter()).last(), Some(&60));
125+
assert_eq!(zs.iter().chain(ys).last(), Some(&60));
126+
assert_eq!(ys.iter().chain(zs).last(), Some(&60));
127+
assert_eq!(zs.iter().chain(zs).last(), None);
128+
}
129+
130+
#[test]
131+
fn test_iterator_chain_count() {
132+
let xs = [0, 1, 2, 3, 4, 5];
133+
let ys = [30, 40, 50, 60];
134+
assert_eq!(xs.iter().chain(ys).count(), 9);
135+
assert_eq!(zs.iter().chain(ys).count(), 4);
136+
}
137+
103138
#[test]
104139
fn test_filter_map() {
105140
let it = (0..).step_by(1).take(10)
@@ -116,6 +151,35 @@ fn test_iterator_enumerate() {
116151
}
117152
}
118153

154+
#[test]
155+
fn test_iterator_enumerate_nth() {
156+
let xs = [0, 1, 2, 3, 4, 5];
157+
let it = xs.iter().enumerate();
158+
for (i, &x) in it {
159+
assert_eq!(i, x);
160+
}
161+
162+
let it = xs.iter().enumerate();
163+
while let Some((i, &x)) = it.nth(0) {
164+
assert_eq!(i, x);
165+
}
166+
167+
let it = xs.iter().enumerate();
168+
while let Some((i, &x)) = it.nth(1) {
169+
assert_eq!(i, x);
170+
}
171+
172+
let (i, &x) = xs.iter.enumerate().nth(3);
173+
assert_eq!(i, x);
174+
assert_eq!(i, 4);
175+
}
176+
177+
#[test]
178+
fn test_iterator_enumerate_count() {
179+
let xs = [0, 1, 2, 3, 4, 5];
180+
assert_eq!(xs.iter().count(), 6);
181+
}
182+
119183
#[test]
120184
fn test_iterator_peekable() {
121185
let xs = vec![0, 1, 2, 3, 4, 5];
@@ -148,6 +212,62 @@ fn test_iterator_peekable() {
148212
assert_eq!(it.len(), 0);
149213
}
150214

215+
#[test]
216+
fn test_iterator_peekable_count() {
217+
let xs = [0, 1, 2, 3, 4, 5];
218+
let ys = [10];
219+
let zs = [];
220+
221+
assert_eq!(xs.iter().peekable().count(), 6);
222+
223+
let mut it = xs.iter().peekable();
224+
assert_eq!(it.peek().unwrap(), &0);
225+
assert_eq!(it.count(), 6);
226+
assert_eq!(it.count(), 0);
227+
228+
assert_eq!(ys.iter().peekable().count(), 1);
229+
230+
let mut it = ys.iter().peekable();
231+
assert_eq!(it.peek().unwrap(), &10);
232+
assert_eq!(it.count(), 1);
233+
assert_eq!(it.count(), 0);
234+
235+
assert_eq!(zs.iter().peekable().count(), 0);
236+
237+
let mut it = zs.iter().peekable();
238+
assert_eq!(it.peek(), None);
239+
assert_eq!(it.count(), 0);
240+
241+
}
242+
243+
#[test]
244+
fn test_iterator_peekable_nth() {
245+
let xs = [0, 1, 2, 3, 4, 5];
246+
let mut it = xs.iter().peekable();
247+
248+
assert_eq!(it.peek(), Some(&0));
249+
assert_eq!(it.nth(0), Some(&0));
250+
assert_eq!(it.peek(), Some(&1));
251+
assert_eq!(it.nth(1), Some(&2));
252+
assert_eq!(it.peek(), Some(&3));
253+
assert_eq!(it.nth(2), Some(&5));
254+
assert_eq!(it.next(), None);
255+
}
256+
257+
#[test]
258+
fn test_iterator_peekable_last() {
259+
let xs = [0, 1, 2, 3, 4, 5];
260+
let ys = [0];
261+
262+
let mut it = xs.iter().peekable();
263+
assert_eq!(it.peek(), Some(&0));
264+
assert_eq!(it.last(), Some(&5));
265+
266+
let mut it = ys.iter().peekable();
267+
assert_eq!(it.peek(), Some(&0));
268+
assert_eq!(it.last(), Some(&0));
269+
}
270+
151271
#[test]
152272
fn test_iterator_take_while() {
153273
let xs = [0, 1, 2, 3, 5, 13, 15, 16, 17, 19];
@@ -189,6 +309,49 @@ fn test_iterator_skip() {
189309
assert_eq!(it.len(), 0);
190310
}
191311

312+
#[test]
313+
fn test_iterator_skip_nth() {
314+
let xs = [0, 1, 2, 3, 5, 13, 15, 16, 17, 19, 20, 30];
315+
316+
let it = xs.iter().skip(0);
317+
assert_eq!(it.nth(0), Some(&0));
318+
assert_eq!(it.nth(1), Some(&2));
319+
320+
let it = xs.iter().skip(5);
321+
assert_eq!(it.nth(0), Some(&15));
322+
assert_eq!(it.nth(1), Some(&17));
323+
324+
let it = xs.iter().skip(11);
325+
assert_eq!(it.nth(0), None);
326+
327+
}
328+
329+
#[test]
330+
fn test_iterator_skip_count() {
331+
let xs = [0, 1, 2, 3, 5, 13, 15, 16, 17, 19, 20, 30];
332+
333+
assert_eq!(xs.iter().skip(0).count(), 11);
334+
assert_eq!(xs.iter().skip(1).count(), 10);
335+
assert_eq!(xs.iter().skip(10).count(), 1);
336+
assert_eq!(xs.iter().skip(11).count(), 0);
337+
assert_eq!(xs.iter().skip(12).count(), 0);
338+
}
339+
340+
#[test]
341+
fn test_iterator_skip_last() {
342+
let xs = [0, 1, 2, 3, 5, 13, 15, 16, 17, 19, 20, 30];
343+
344+
assert_eq!(xs.iter().skip(0).last(), Some(&30));
345+
assert_eq!(xs.iter().skip(1).last(), Some(&30));
346+
assert_eq!(xs.iter().skip(10).last(), Some(&30));
347+
assert_eq!(xs.iter().skip(11).last(), None);
348+
assert_eq!(xs.iter().skip(12).last(), None);
349+
350+
let it = xs.iter().skip(5);
351+
assert_eq!(it.next(), Some(&13));
352+
assert_eq!(it.last(), Some(&30));
353+
}
354+
192355
#[test]
193356
fn test_iterator_take() {
194357
let xs = [0, 1, 2, 3, 5, 13, 15, 16, 17, 19];
@@ -205,6 +368,27 @@ fn test_iterator_take() {
205368
assert_eq!(it.len(), 0);
206369
}
207370

371+
#[test]
372+
fn test_iterator_take_nth() {
373+
let xs = [0, 1, 2, 4, 5];
374+
let mut it = xs.iter().take(3);
375+
let mut i = 0;
376+
while let Some(&x) = it.nth(0) {
377+
assert_eq!(x, i);
378+
i += 1;
379+
}
380+
assert_eq!(it.nth(1), Some(&5));
381+
assert_eq!(it.nth(0), None);
382+
383+
let xs = [0, 1, 2, 4, 5];
384+
let mut it = xs.iter().take(7);
385+
let mut i = 1;
386+
while let Some(&x) = it.nth(1) {
387+
assert_eq!(x, i);
388+
i += 2;
389+
}
390+
}
391+
208392
#[test]
209393
fn test_iterator_take_short() {
210394
let xs = [0, 1, 2, 3];
@@ -869,6 +1053,42 @@ fn test_fuse() {
8691053
assert_eq!(it.len(), 0);
8701054
}
8711055

1056+
#[test]
1057+
fn test_fuse_nth() {
1058+
let xs = [0, 1, 2];
1059+
let mut it = xs.iter();
1060+
1061+
assert_eq!(it.len(), 3);
1062+
assert_eq!(it.nth(2), Some(&2));
1063+
assert_eq!(it.len(), 0);
1064+
assert_eq!(it.nth(2), None);
1065+
assert_eq!(it.len(), 0);
1066+
}
1067+
1068+
#[test]
1069+
fn test_fuse_last() {
1070+
let xs = [0, 1, 2];
1071+
let mut it = xs.iter();
1072+
1073+
assert_eq!(it.len(), 3);
1074+
assert_eq!(it.last(), Some(&2));
1075+
assert_eq!(it.len(), 0);
1076+
assert_eq!(it.last(), None);
1077+
assert_eq!(it.len(), 0);
1078+
}
1079+
1080+
#[test]
1081+
fn test_fuse_count() {
1082+
let xs = [0, 1, 2];
1083+
let mut it = xs.iter();
1084+
1085+
assert_eq!(it.len(), 3);
1086+
assert_eq!(it.count(), 3);
1087+
assert_eq!(it.len(), 0);
1088+
assert_eq!(it.count(), 0);
1089+
assert_eq!(it.len(), 0);
1090+
}
1091+
8721092
#[bench]
8731093
fn bench_rposition(b: &mut Bencher) {
8741094
let it: Vec<usize> = (0..300).collect();

0 commit comments

Comments
 (0)