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_into_vec_ptr() {
    let cev: Cev<u8> = Cev::new();
    let vec = cev.into_vec();
    assert_eq!(vec.len(), 0);
    assert_eq!(vec.capacity(), 0);
    assert_eq!(vec.as_ptr(), NonNull::dangling().as_ptr());
    assert_eq!(vec, []);

    let cev: Cev<u8> = Cev::with_capacity(0);
    let vec = cev.into_vec();
    assert_eq!(vec.len(), 0);
    assert_eq!(vec.capacity(), 0);
    assert_eq!(vec.as_ptr(), NonNull::dangling().as_ptr());
    assert_eq!(vec, []);

    let cev: Cev<u8> = Cev::with_capacity(1);
    let raw_ptr = cev.raw_ptr();
    let mov_ptr = cev.as_ptr();
    let vec = cev.into_vec();
    assert_eq!(vec.len(), 0);
    assert_eq!(vec.capacity(), 1);
    assert_eq!(vec.as_ptr(), mov_ptr);
    assert_eq!(vec.as_ptr(), raw_ptr);
    assert_eq!(vec, []);

    let mut cev: Cev<u8> = Cev::with_capacity(1);
    cev.push(173);
    let raw_ptr = cev.raw_ptr();
    let mov_ptr = cev.as_ptr();
    let vec = cev.into_vec();
    assert_eq!(vec.len(), 1);
    assert_eq!(vec.capacity(), 1);
    assert_eq!(vec.as_ptr(), mov_ptr);
    assert_eq!(vec.as_ptr(), raw_ptr);
    assert_eq!(vec, [173]);

    let mut cev: Cev<u8> = Cev::with_capacity(5);
    cev.push(173);
    cev.push(172);
    cev.push(171);
    assert_eq!(cev[0], 171);
    let raw_ptr = cev.raw_ptr();
    let vec = cev.into_vec();
    assert_eq!(vec.len(), 3);
    assert_eq!(vec.capacity(), 5);
    assert_eq!(vec.as_ptr(), raw_ptr);
    assert_eq!(vec[0], 171);
    assert_eq!(unsafe { *raw_ptr }, 171);
    assert_eq!(vec, [171, 172, 173]);

    let cev: Cev<()> = Cev::with_capacity(0);
    let vec = cev.into_vec();
    assert_eq!(vec.len(), 0);
    assert_eq!(vec.capacity(), usize::MAX);
    assert_eq!(vec.as_ptr(), NonNull::dangling().as_ptr());
    assert_eq!(vec, []);

    let mut cev: Cev<()> = Cev::with_capacity(1);
    cev.push(());
    let vec = cev.into_vec();
    assert_eq!(vec.len(), 1);
    assert_eq!(vec.capacity(), usize::MAX);
    assert_eq!(vec.as_ptr(), NonNull::dangling().as_ptr());
    assert_eq!(vec, [()]);

    let mut cev: Cev<()> = Cev::with_capacity(7);
    cev.push(());
    cev.push(());
    cev.push(());
    cev.push(());
    let vec = cev.into_vec();
    assert_eq!(vec.len(), 4);
    assert_eq!(vec.capacity(), usize::MAX);
    assert_eq!(vec.as_ptr(), NonNull::dangling().as_ptr());
    assert_eq!(vec, [(), (), (), ()]);
}