robt 0.2.0

Read only, immutable Btree for indexing key,value
Documentation
use super::*;
use rand::{prelude::random, rngs::SmallRng, Rng, SeedableRng};

#[test]
fn test_entry() {
    let seed: u128 = random();
    println!("test_entry {}", seed);
    let mut rng = SmallRng::from_seed(seed.to_le_bytes());
    let key = 10;

    let mut dbnt = match rng.gen::<u8>() % 2 {
        0 => db::Entry::<u64, u64, u64>::new(key, rng.gen(), 1),
        1 => db::Entry::<u64, u64, u64>::new_deleted(key, 1),
        _ => unreachable!(),
    };
    for seqno in 2..10 {
        match rng.gen::<u8>() % 2 {
            0 => dbnt.insert(rng.gen(), seqno),
            1 => dbnt.delete(seqno),
            _ => unreachable!(),
        }
    }
    let zz = Entry::<u64, u64, u64>::from(dbnt.clone());
    let mm = Entry::<u64, u64, u64>::new_mm(key, 100);
    let mz = Entry::<u64, u64, u64>::new_mz(key, 200);

    assert_eq!(dbnt, db::Entry::from(Entry::from(dbnt.clone())));
    assert_eq!(zz.as_key(), &key);
    assert_eq!(mz.as_key(), &key);
    assert_eq!(mm.as_key(), &key);
    assert_eq!(zz.borrow_key(), &key);
    assert_eq!(mz.borrow_key(), &key);
    assert_eq!(mm.borrow_key(), &key);
    assert_eq!(zz.to_key(), key);
    assert_eq!(mz.to_key(), key);
    assert_eq!(mm.to_key(), key);
    assert_eq!(zz.is_zblock(), true);
    assert_eq!(mz.is_zblock(), false);
    assert_eq!(mm.is_zblock(), false);

    let res = mm.clone().into_reference(0, true).unwrap();
    assert_eq!(mm, res.0);
    assert!(res.1.is_empty());
    let res = mz.clone().into_reference(0, true).unwrap();
    assert_eq!(mz, res.0);
    assert!(res.1.is_empty());

    let (zz_ref, data) = zz.clone().into_reference(0, true).unwrap();
    assert_eq!(zz_ref.to_key(), key);

    let mut data = io::Cursor::new(data);
    assert_eq!(zz_ref.into_native(&mut data, true).unwrap(), zz);
}