cev 0.1.0

An expandable data array used to add data to the beginning of the array.
Documentation
use cev::Cev;
use std::ptr::NonNull;

#[test]
fn test_extra_insert() {
    let mut cev = Cev::<u8>::new();
    cev.insert(0, 1);
    assert_eq!(unsafe { cev.as_ptr().offset_from(cev.raw_ptr()) }, (cev.capacity() - cev.len()) as isize);
    assert_eq!(cev, [1]);
    cev.insert(1, 2);
    assert_eq!(cev, [1, 2]);
    assert_eq!(unsafe { cev.as_ptr().offset_from(cev.raw_ptr()) }, (cev.capacity() - cev.len()) as isize);
    cev.insert(0, 0);
    assert_eq!(cev, [0, 1, 2]);
    assert_eq!(unsafe { cev.as_ptr().offset_from(cev.raw_ptr()) }, (cev.capacity() - cev.len()) as isize);
    cev.insert(3, 3);
    assert_eq!(cev, [0, 1, 2, 3]);
    assert_eq!(unsafe { cev.as_ptr().offset_from(cev.raw_ptr()) }, (cev.capacity() - cev.len()) as isize);
    cev.insert(4, 4);
    assert_eq!(cev, [0, 1, 2, 3, 4]);
    assert_eq!(unsafe { cev.as_ptr().offset_from(cev.raw_ptr()) }, (cev.capacity() - cev.len()) as isize);
    cev.insert(5, 5);
    assert_eq!(cev, [0, 1, 2, 3, 4, 5]);
    assert_eq!(unsafe { cev.as_ptr().offset_from(cev.raw_ptr()) }, (cev.capacity() - cev.len()) as isize);
    cev.insert(6, 6);
    assert_eq!(cev, [0, 1, 2, 3, 4, 5, 6]);
    assert_eq!(unsafe { cev.as_ptr().offset_from(cev.raw_ptr()) }, (cev.capacity() - cev.len()) as isize);
    cev.insert(7, 7);
    assert_eq!(cev, [0, 1, 2, 3, 4, 5, 6, 7]);
    assert_eq!(unsafe { cev.as_ptr().offset_from(cev.raw_ptr()) }, (cev.capacity() - cev.len()) as isize);
    cev.insert(8, 8);
    assert_eq!(cev, [0, 1, 2, 3, 4, 5, 6, 7, 8]);
    assert_eq!(unsafe { cev.as_ptr().offset_from(cev.raw_ptr()) }, (cev.capacity() - cev.len()) as isize);
    let mut cev = Cev::<u8>::with_capacity(1);
    cev.insert(0, 2);
    assert_eq!(cev, [2]);
    assert_eq!(unsafe { cev.as_ptr().offset_from(cev.raw_ptr()) }, (cev.capacity() - cev.len()) as isize);

    let mut cev = Cev::<()>::new();
    cev.insert(0, ());
    assert_eq!(cev, [()]);
    assert_eq!(cev.as_ptr(), NonNull::<()>::dangling().as_ptr());

    assert_eq!(cev, [()]);
    assert_eq!(cev.as_ptr(), NonNull::<()>::dangling().as_ptr());
    cev.insert(1, ());
    assert_eq!(cev, [(), ()]);
    assert_eq!(cev.as_ptr(), NonNull::<()>::dangling().as_ptr());
    cev.insert(0, ());
    assert_eq!(cev, [(), (), ()]);
    assert_eq!(cev.as_ptr(), NonNull::<()>::dangling().as_ptr());
}