]> git.lizzy.rs Git - rust.git/blob - library/core/tests/iter/adapters/fuse.rs
Auto merge of #104992 - ehuss:docs-triagebot-assign, r=Mark-Simulacrum
[rust.git] / library / core / tests / iter / adapters / fuse.rs
1 use core::iter::*;
2
3 #[test]
4 fn test_fuse_nth() {
5     let xs = [0, 1, 2];
6     let mut it = xs.iter();
7
8     assert_eq!(it.len(), 3);
9     assert_eq!(it.nth(2), Some(&2));
10     assert_eq!(it.len(), 0);
11     assert_eq!(it.nth(2), None);
12     assert_eq!(it.len(), 0);
13 }
14
15 #[test]
16 fn test_fuse_last() {
17     let xs = [0, 1, 2];
18     let it = xs.iter();
19
20     assert_eq!(it.len(), 3);
21     assert_eq!(it.last(), Some(&2));
22 }
23
24 #[test]
25 fn test_fuse_count() {
26     let xs = [0, 1, 2];
27     let it = xs.iter();
28
29     assert_eq!(it.len(), 3);
30     assert_eq!(it.count(), 3);
31     // Can't check len now because count consumes.
32 }
33
34 #[test]
35 fn test_fuse_fold() {
36     let xs = [0, 1, 2];
37     let it = xs.iter(); // `FusedIterator`
38     let i = it.fuse().fold(0, |i, &x| {
39         assert_eq!(x, xs[i]);
40         i + 1
41     });
42     assert_eq!(i, xs.len());
43
44     let it = xs.iter(); // `FusedIterator`
45     let i = it.fuse().rfold(xs.len(), |i, &x| {
46         assert_eq!(x, xs[i - 1]);
47         i - 1
48     });
49     assert_eq!(i, 0);
50
51     let it = xs.iter().scan((), |_, &x| Some(x)); // `!FusedIterator`
52     let i = it.fuse().fold(0, |i, x| {
53         assert_eq!(x, xs[i]);
54         i + 1
55     });
56     assert_eq!(i, xs.len());
57 }
58
59 #[test]
60 fn test_fuse() {
61     let mut it = 0..3;
62     assert_eq!(it.len(), 3);
63     assert_eq!(it.next(), Some(0));
64     assert_eq!(it.len(), 2);
65     assert_eq!(it.next(), Some(1));
66     assert_eq!(it.len(), 1);
67     assert_eq!(it.next(), Some(2));
68     assert_eq!(it.len(), 0);
69     assert_eq!(it.next(), None);
70     assert_eq!(it.len(), 0);
71     assert_eq!(it.next(), None);
72     assert_eq!(it.len(), 0);
73     assert_eq!(it.next(), None);
74     assert_eq!(it.len(), 0);
75 }