[go: up one dir, main page]

roaring 0.1.0

http://roaringbitmap.org for http://www.rust-lang.org
#![feature(slicing_syntax)]

extern crate roaring;

use roaring::RoaringBitmap;

#[test]
fn or() {
    let rb1: RoaringBitmap = (1..4).collect();
    let rb2: RoaringBitmap = (3..6).collect();
    let rb3: RoaringBitmap = (1..6).collect();

    assert_eq!(rb3, &rb1 | &rb2);
    assert_eq!(rb3, rb1 | rb2 | &rb3);
}

#[test]
fn and() {
    let rb1: RoaringBitmap = (1..4).collect();
    let rb2: RoaringBitmap = (3..6).collect();
    let rb3: RoaringBitmap = (3..4).collect();

    assert_eq!(rb3, &rb1 & &rb2);
    assert_eq!(rb3, rb1 & rb2 & &rb3);
}

#[test]
fn sub() {
    let rb1: RoaringBitmap = (1..4).collect();
    let rb2: RoaringBitmap = (3..6).collect();
    let rb3: RoaringBitmap = (1..3).collect();
    let rb4: RoaringBitmap = (0..0).collect();

    assert_eq!(rb3, &rb1 - &rb2);
    assert_eq!(rb4, rb1 - rb2 - rb3);
}

#[test]
fn xor() {
    let rb1: RoaringBitmap = (1..4).collect();
    let rb2: RoaringBitmap = (3..6).collect();
    let rb3: RoaringBitmap = (1..3).chain(4..6).collect();
    let rb4: RoaringBitmap = (0..0).collect();

    assert_eq!(rb3, &rb1 ^ &rb2);
    assert_eq!(rb4, rb1 ^ rb2 ^ rb3);
}