mirror of
https://forgejo.ellis.link/continuwuation/continuwuity.git
synced 2025-08-04 11:43:58 +00:00
add set intersection util for two sorted streams
Signed-off-by: Jason Volk <jason@zemos.net>
This commit is contained in:
parent
bae0667066
commit
aea82183b2
2 changed files with 70 additions and 1 deletions
|
@ -237,3 +237,42 @@ fn set_intersection_sorted_all() {
|
|||
let r = intersection_sorted(i.into_iter());
|
||||
assert!(r.eq(["bar", "baz", "foo"].iter()));
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
async fn set_intersection_sorted_stream2() {
|
||||
use futures::StreamExt;
|
||||
use utils::{set::intersection_sorted_stream2, IterStream};
|
||||
|
||||
let a = ["bar"];
|
||||
let b = ["bar", "foo"];
|
||||
let r = intersection_sorted_stream2(a.iter().stream(), b.iter().stream())
|
||||
.collect::<Vec<&str>>()
|
||||
.await;
|
||||
assert!(r.eq(&["bar"]));
|
||||
|
||||
let r = intersection_sorted_stream2(b.iter().stream(), a.iter().stream())
|
||||
.collect::<Vec<&str>>()
|
||||
.await;
|
||||
assert!(r.eq(&["bar"]));
|
||||
|
||||
let a = ["aaa", "ccc", "xxx", "yyy"];
|
||||
let b = ["hhh", "iii", "jjj", "zzz"];
|
||||
let r = intersection_sorted_stream2(a.iter().stream(), b.iter().stream())
|
||||
.collect::<Vec<&str>>()
|
||||
.await;
|
||||
assert!(r.is_empty());
|
||||
|
||||
let a = ["aaa", "ccc", "eee", "ggg"];
|
||||
let b = ["aaa", "bbb", "ccc", "ddd", "eee"];
|
||||
let r = intersection_sorted_stream2(a.iter().stream(), b.iter().stream())
|
||||
.collect::<Vec<&str>>()
|
||||
.await;
|
||||
assert!(r.eq(&["aaa", "ccc", "eee"]));
|
||||
|
||||
let a = ["aaa", "ccc", "eee", "ggg", "hhh", "iii"];
|
||||
let b = ["bbb", "ccc", "ddd", "fff", "ggg", "iii"];
|
||||
let r = intersection_sorted_stream2(a.iter().stream(), b.iter().stream())
|
||||
.collect::<Vec<&str>>()
|
||||
.await;
|
||||
assert!(r.eq(&["ccc", "ggg", "iii"]));
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue