extern crate joinkit;
use joinkit::Joinkit;
use joinkit::EitherOrBoth::{Both, Left, Right};
#[test]
fn inner_fused() {
let a = 0..3;
let b = 2..5;
let mut it = a.merge_join_inner_by(b, |x, y| Ord::cmp(&x, &y));
assert_eq!(it.next(), Some((2, 2)));
assert_eq!(it.next(), None);
}
#[test]
fn inner_fused_inv() {
let a = 2..5;
let b = 0..3;
let mut it = a.merge_join_inner_by(b, |x, y| Ord::cmp(&x, &y));
assert_eq!(it.next(), Some((2, 2)));
assert_eq!(it.next(), None);
}
#[test]
fn left_excl_fused() {
let a = 0..3;
let b = 2..5;
let mut it = a.merge_join_left_excl_by(b, |x, y| Ord::cmp(&x, &y));
assert_eq!(it.next(), Some(0));
assert_eq!(it.next(), Some(1));
assert_eq!(it.next(), None);
}
#[test]
fn left_excl_fused_inv() {
let a = 2..5;
let b = 0..3;
let mut it = a.merge_join_left_excl_by(b, |x, y| Ord::cmp(&x, &y));
assert_eq!(it.next(), Some(3));
assert_eq!(it.next(), Some(4));
assert_eq!(it.next(), None);
}
#[test]
fn left_outer_fused() {
let a = 0..3;
let b = 2..5;
let mut it = a.merge_join_left_outer_by(b, |x, y| Ord::cmp(&x, &y));
assert_eq!(it.next(), Some(Left(0)));
assert_eq!(it.next(), Some(Left(1)));
assert_eq!(it.next(), Some(Both(2, 2)));
assert_eq!(it.next(), None);
}
#[test]
fn left_outer_fused_inv() {
let a = 2..5;
let b = 0..3;
let mut it = a.merge_join_left_outer_by(b, |x, y| Ord::cmp(&x, &y));
assert_eq!(it.next(), Some(Both(2, 2)));
assert_eq!(it.next(), Some(Left(3)));
assert_eq!(it.next(), Some(Left(4)));
assert_eq!(it.next(), None);
}
#[test]
fn full_outer_fused() {
let a = 0..3;
let b = 2..5;
let mut it = a.merge_join_full_outer_by(b, |x, y| Ord::cmp(&x, &y));
assert_eq!(it.next(), Some(Left(0)));
assert_eq!(it.next(), Some(Left(1)));
assert_eq!(it.next(), Some(Both(2, 2)));
assert_eq!(it.next(), Some(Right(3)));
assert_eq!(it.next(), Some(Right(4)));
assert_eq!(it.next(), None);
}
#[test]
fn full_outer_fused_inv() {
let a = 2..5;
let b = 0..3;
let mut it = a.merge_join_full_outer_by(b, |x, y| Ord::cmp(&x, &y));
assert_eq!(it.next(), Some(Right(0)));
assert_eq!(it.next(), Some(Right(1)));
assert_eq!(it.next(), Some(Both(2, 2)));
assert_eq!(it.next(), Some(Left(3)));
assert_eq!(it.next(), Some(Left(4)));
assert_eq!(it.next(), None);
}