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