1 use itertools::Itertools;
2 use itertools::{put_back, put_back_n};
3
4 #[test]
peeking_take_while_peekable()5 fn peeking_take_while_peekable() {
6 let mut r = (0..10).peekable();
7 r.peeking_take_while(|x| *x <= 3).count();
8 assert_eq!(r.next(), Some(4));
9 }
10
11 #[test]
peeking_take_while_put_back()12 fn peeking_take_while_put_back() {
13 let mut r = put_back(0..10);
14 r.peeking_take_while(|x| *x <= 3).count();
15 assert_eq!(r.next(), Some(4));
16 r.peeking_take_while(|_| true).count();
17 assert_eq!(r.next(), None);
18 }
19
20 #[test]
peeking_take_while_put_back_n()21 fn peeking_take_while_put_back_n() {
22 let mut r = put_back_n(6..10);
23 for elt in (0..6).rev() {
24 r.put_back(elt);
25 }
26 r.peeking_take_while(|x| *x <= 3).count();
27 assert_eq!(r.next(), Some(4));
28 r.peeking_take_while(|_| true).count();
29 assert_eq!(r.next(), None);
30 }
31
32 #[test]
peeking_take_while_slice_iter()33 fn peeking_take_while_slice_iter() {
34 let v = [1, 2, 3, 4, 5, 6];
35 let mut r = v.iter();
36 r.peeking_take_while(|x| **x <= 3).count();
37 assert_eq!(r.next(), Some(&4));
38 r.peeking_take_while(|_| true).count();
39 assert_eq!(r.next(), None);
40 }
41
42 #[test]
peeking_take_while_slice_iter_rev()43 fn peeking_take_while_slice_iter_rev() {
44 let v = [1, 2, 3, 4, 5, 6];
45 let mut r = v.iter().rev();
46 r.peeking_take_while(|x| **x >= 3).count();
47 assert_eq!(r.next(), Some(&2));
48 r.peeking_take_while(|_| true).count();
49 assert_eq!(r.next(), None);
50 }
51