heaparray 0.1.5

Heap-allocated array with optional metadata field
Documentation
use super::*;

#[test]
fn make_arrays() {
    let _thin = ThinPtrArray::new_labelled(Test::default(), 10, |_, i| i);
}

#[test]
#[should_panic]
fn bounds_check_fat() {
    let fat = FatPtrArray::new_labelled(Test::default(), 10, |_, i| i);
    println!("{}", fat[10]);
}

#[test]
#[should_panic]
fn bounds_check_thin() {
    let thin = ThinPtrArray::new_labelled(Test::default(), 10, |_, i| i);
    println!("{}", thin[10]);
}

#[test]
fn data_check_fat() {
    let arr = FatPtrArray::new_labelled(Test::default(), 100, |_, _| Test::default());
    let default = Test::default();
    for i in 0..arr.len() {
        assert!(default == arr[i]);
    }
}

#[test]
fn data_check_thin() {
    let arr = ThinPtrArray::new_labelled(Test::default(), 100, |_, _| Test::default());
    let default = Test::default();
    for i in 0..arr.len() {
        assert!(default == arr[i]);
    }
}

#[test]
fn swap_exchange_thin() {
    let mut arr = ThinPtrArray::new_labelled(Test::default(), 100, |_, i| Test {
        a: i,
        b: i as u8,
        c: i as u8,
    });

    let mut default = Test::default();
    let len = arr.len();
    for i in 0..len {
        default = match arr.insert(i, default) {
            Some(x) => x,
            None => panic!("should not return None"),
        }
    }
    assert!(Test::default() == arr[0]);
    for i in 1..arr.len() {
        assert!(arr[i].a == i - 1);
        assert!(arr[i].b == i as u8 - 1);
        assert!(arr[i].c == i as u8 - 1);
    }
}

#[test]
fn swap_exchange_fat() {
    let mut arr = FatPtrArray::new_labelled(Test::default(), 100, |_, i| Test {
        a: i,
        b: i as u8,
        c: i as u8,
    });

    let mut default = Test::default();
    let len = arr.len();
    for i in 0..len {
        default = match arr.insert(i, default) {
            Some(x) => x,
            None => panic!("should not return None"),
        }
    }
    assert!(Test::default() == arr[0]);
    for i in 1..arr.len() {
        assert!(arr[i].a == i - 1);
        assert!(arr[i].b == i as u8 - 1);
        assert!(arr[i].c == i as u8 - 1);
    }
}