joinkit 0.2.0

Iterator adaptors for efficient SQL-like joins
Documentation
extern crate joinkit;

use joinkit::util::{self, DataType};

#[test]
fn extract_key_single_eq() {
    unsafe {
        let rec0 = "20;a;b";
        let rec1 = "20;a;b";
        let key_idx = [(0, 0, DataType::U)];
        let k0 = util::extract_key(rec0, ";", &key_idx);
        let k1 = util::extract_key(rec1, ";", &key_idx);

        assert_eq!(k0, k1);
    }
}

#[test]
fn extract_key_single_ne() {
    unsafe {
        let rec0 = "20;a;b";
        let rec1 = "2;a;b";
        let key_idx = [(0, 0, DataType::U)];
        let k0 = util::extract_key(rec0, ";", &key_idx);
        let k1 = util::extract_key(rec1, ";", &key_idx);

        assert!(k0 > k1);
    }
}

#[test]
fn extract_key_multiple_eq() {
    unsafe {
        let rec0 = "20;a;b";
        let rec1 = "20;a;b";
        let key_idx = [(0, 1, DataType::U), (2, 0, DataType::S)];
        let k0 = util::extract_key(rec0, ";", &key_idx);
        let k1 = util::extract_key(rec1, ";", &key_idx);

        assert_eq!(k0, k1);
    }
}

#[test]
fn extract_key_multiple_ne() {
    unsafe {
        let rec0 = "20;a;b";
        let rec1 = "2;a;b";
        let key_idx = [(0, 1, DataType::U), (2, 0, DataType::S)];
        let k0 = util::extract_key(rec0, ";", &key_idx);
        let k1 = util::extract_key(rec1, ";", &key_idx);

        assert!(k0 > k1);
    }
}