peeking_take_while.rs 1.3 KB

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