vebtrees 0.1.0

A Rust implementation of Van Emde Boas trees
Documentation
use vebtree::VEBTree;

use std::time::{Instant, Duration};



#[test]
fn test_contains_correctness(){
    for j in 0..16 {
        let mut test_tree = VEBTree::new(16);
        for i in 0..j {
            test_tree.insert(i);
        }
        for i in 0..j {
            assert!(test_tree.contains(i));
        }
        for i in j..16 {
            assert!(!test_tree.contains(i));
        }
    }
}

#[test]
fn test_search_correctness(){
    for i in 0..16 {
        let mut test_tree = VEBTree::new(16);
        for j in 0..i {
            test_tree.insert(j);
        }
        for j in 0..i {
            println!("{:?}", test_tree.contains(j));
            assert_eq!(test_tree.search(j),Some(j));
        }
    }
}

#[test]
fn test_insert_and_delete_correctness(){
    let mut test_tree = VEBTree::new(16);
    let mut reference_tree = VEBTree::new(16);
    for i in 0..16 {
        test_tree.insert(i);
    }
    for i in 0..16 {
        test_tree.delete(i);
    }
    assert_eq!(test_tree, reference_tree);
}

#[test]
fn test_insert_and_delete_correctness_odd(){
    for i in 17..32 {
        println!("{}", i);
        let mut test_tree = VEBTree::new(i);
        let mut reference_tree = VEBTree::new(i);
        for j in 0..i {
            test_tree.insert(j);
        }
        for j in 0..i {
            test_tree.delete(j);
        }
        assert_eq!(test_tree, reference_tree);
    }
}
#[test]
fn test_minimum_correctness(){
    let mut test_tree = VEBTree::new(16);
    for i in (0..16).rev() {
        test_tree.insert(i);
        assert_eq!(test_tree.minimum(), Some(i));
    }
    for i in 0..15 {
        test_tree.delete(i);
        assert_eq!(test_tree.minimum(), Some(i+1));
    }
    for i in 0..16 {
        test_tree.insert(i);
    }
    for i in 0..16 {
        if i % 2 == 0 {
            test_tree.delete(i);
        } else {
            assert_eq!(test_tree.minimum(), Some(i));
            test_tree.delete(i);
        }
    }
}

#[test]
fn test_maximum_correctness(){
    let mut test_tree = VEBTree::new(16);
    for i in 0..16 {
        test_tree.insert(i);
        assert_eq!(test_tree.maximum(), Some(i));
    }
    for i in (0..16).rev() {
        assert_eq!(test_tree.maximum(), Some(i));
        test_tree.delete(i);
    }
}

#[test]
fn test_findnext_correctness(){
    let mut test_tree = VEBTree::new(16);
    for i in 0..16 {
        if i % 3 == 0 {
            test_tree.insert(i);
        }
    }
    for i in 0..13 {
        if i % 3 == 0 {
            assert_eq!(test_tree.findnext(i), Some(i+3));
        }
    }
}

#[test]
fn test_findprev_correctness(){
    let mut test_tree = VEBTree::new(16);
    for i in 0..16 {
        if i % 3 == 0 {
            test_tree.insert(i);
        }
    }
    for i in 3..16 {
        if i % 3 == 0 {
            assert_eq!(test_tree.findprev(i), Some(i-3));
        }
    }
}