1 | **use** rayon::prelude::*; |

2 | |

3 | #[test] |

4 | **fn** check_intersperse() { |

5 | **let** v: Vec<_> = (`0`..`1000`).into_par_iter().intersperse(`-``1`).collect(); |

6 | assert_eq!(v.len(), `1999`); |

7 | **for** (i, x) **in** v.into_iter().enumerate() { |

8 | assert_eq!(x, **if** i % `2` == `0` { i **as** i32 / `2` } **else** { -`1` }); |

9 | } |

10 | } |

11 | |

12 | #[test] |

13 | **fn** check_intersperse_again() { |

14 | **let** v: Vec<_> = (`0`..`1000`) |

15 | .into_par_iter() |

16 | .intersperse(`-``1`) |

17 | .intersperse(`-``2`) |

18 | .collect(); |

19 | assert_eq!(v.len(), `3997`); |

20 | **for** (i, x) **in** v.into_iter().enumerate() { |

21 | **let** y = **match** i % `4` { |

22 | `0` => i **as** **i32** / `4`, |

23 | `2` => `-``1`, |

24 | _ => `-``2`, |

25 | }; |

26 | assert_eq!(x, y); |

27 | } |

28 | } |

29 | |

30 | #[test] |

31 | **fn** check_intersperse_unindexed() { |

32 | **let** v: Vec<_> = (`0`..`1000`).map(|i| i.to_string()).collect(); |

33 | **let** s = v.join("," ); |

34 | **let** s2 = v.join(";" ); |

35 | **let** par: String = s.par_split(',' ).intersperse(";" ).collect(); |

36 | assert_eq!(par, s2); |

37 | } |

38 | |

39 | #[test] |

40 | **fn** check_intersperse_producer() { |

41 | (`0`..`1000`) |

42 | .into_par_iter() |

43 | .intersperse(`-``1`) |

44 | .zip_eq(`0`..`1999`) |

45 | .for_each(|(x, i)| { |

46 | assert_eq!(x, **if** i % `2` == `0` { i / `2` } **else** { -`1` }); |

47 | }); |

48 | } |

49 | |

50 | #[test] |

51 | **fn** check_intersperse_rev() { |

52 | (`0`..`1000`) |

53 | .into_par_iter() |

54 | .intersperse(`-``1`) |

55 | .zip_eq(`0`..`1999`) |

56 | .rev() |

57 | .for_each(|(x, i)| { |

58 | assert_eq!(x, **if** i % `2` == `0` { i / `2` } **else** { -`1` }); |

59 | }); |

60 | } |

61 | |