]>
git.proxmox.com Git - rustc.git/blob - vendor/itertools-0.7.8/tests/merge_join.rs
1 extern crate itertools
;
3 use itertools
::EitherOrBoth
;
4 use itertools
::free
::merge_join_by
;
8 let left
: Vec
<u32> = vec
![];
9 let right
: Vec
<u32> = vec
![];
10 let expected_result
: Vec
<EitherOrBoth
<u32, u32>> = vec
![];
11 let actual_result
= merge_join_by(left
, right
, |l
, r
| l
.cmp(r
))
13 assert_eq
!(expected_result
, actual_result
);
18 let left
: Vec
<u32> = vec
![1,2,3];
19 let right
: Vec
<u32> = vec
![];
20 let expected_result
: Vec
<EitherOrBoth
<u32, u32>> = vec
![
21 EitherOrBoth
::Left(1),
22 EitherOrBoth
::Left(2),
25 let actual_result
= merge_join_by(left
, right
, |l
, r
| l
.cmp(r
))
27 assert_eq
!(expected_result
, actual_result
);
32 let left
: Vec
<u32> = vec
![];
33 let right
: Vec
<u32> = vec
![1,2,3];
34 let expected_result
: Vec
<EitherOrBoth
<u32, u32>> = vec
![
35 EitherOrBoth
::Right(1),
36 EitherOrBoth
::Right(2),
37 EitherOrBoth
::Right(3)
39 let actual_result
= merge_join_by(left
, right
, |l
, r
| l
.cmp(r
))
41 assert_eq
!(expected_result
, actual_result
);
45 fn first_left_then_right() {
46 let left
: Vec
<u32> = vec
![1,2,3];
47 let right
: Vec
<u32> = vec
![4,5,6];
48 let expected_result
: Vec
<EitherOrBoth
<u32, u32>> = vec
![
49 EitherOrBoth
::Left(1),
50 EitherOrBoth
::Left(2),
51 EitherOrBoth
::Left(3),
52 EitherOrBoth
::Right(4),
53 EitherOrBoth
::Right(5),
54 EitherOrBoth
::Right(6)
56 let actual_result
= merge_join_by(left
, right
, |l
, r
| l
.cmp(r
))
58 assert_eq
!(expected_result
, actual_result
);
62 fn first_right_then_left() {
63 let left
: Vec
<u32> = vec
![4,5,6];
64 let right
: Vec
<u32> = vec
![1,2,3];
65 let expected_result
: Vec
<EitherOrBoth
<u32, u32>> = vec
![
66 EitherOrBoth
::Right(1),
67 EitherOrBoth
::Right(2),
68 EitherOrBoth
::Right(3),
69 EitherOrBoth
::Left(4),
70 EitherOrBoth
::Left(5),
73 let actual_result
= merge_join_by(left
, right
, |l
, r
| l
.cmp(r
))
75 assert_eq
!(expected_result
, actual_result
);
79 fn interspersed_left_and_right() {
80 let left
: Vec
<u32> = vec
![1,3,5];
81 let right
: Vec
<u32> = vec
![2,4,6];
82 let expected_result
: Vec
<EitherOrBoth
<u32, u32>> = vec
![
83 EitherOrBoth
::Left(1),
84 EitherOrBoth
::Right(2),
85 EitherOrBoth
::Left(3),
86 EitherOrBoth
::Right(4),
87 EitherOrBoth
::Left(5),
88 EitherOrBoth
::Right(6)
90 let actual_result
= merge_join_by(left
, right
, |l
, r
| l
.cmp(r
))
92 assert_eq
!(expected_result
, actual_result
);
96 fn overlapping_left_and_right() {
97 let left
: Vec
<u32> = vec
![1,3,4,6];
98 let right
: Vec
<u32> = vec
![2,3,4,5];
99 let expected_result
: Vec
<EitherOrBoth
<u32, u32>> = vec
![
100 EitherOrBoth
::Left(1),
101 EitherOrBoth
::Right(2),
102 EitherOrBoth
::Both(3, 3),
103 EitherOrBoth
::Both(4, 4),
104 EitherOrBoth
::Right(5),
105 EitherOrBoth
::Left(6)
107 let actual_result
= merge_join_by(left
, right
, |l
, r
| l
.cmp(r
))
108 .collect
::<Vec
<_
>>();
109 assert_eq
!(expected_result
, actual_result
);