Jakub Kotur | a425e55 | 2020-12-21 17:28:15 +0100 | [diff] [blame] | 1 | use itertools::Itertools; |
| 2 | use itertools::{put_back, put_back_n}; |
| 3 | |
| 4 | #[test] |
| 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] |
| 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] |
| 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] |
| 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] |
| 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 | } |