in merkledb/src/tests.rs [18:56]
fn simple_test() {
let mut mdb = MerkleMemDB::default();
let h1 = compute_data_hash("hello world".as_bytes());
let h2 = compute_data_hash("pikachu".as_bytes());
let chunks = vec![ChunkInfo { hash: h1, length: 11 }, ChunkInfo { hash: h2, length: 7 }];
let mut staging = mdb.start_insertion_staging();
mdb.add_file(&mut staging, &chunks);
let res = mdb.finalize(staging);
let nodes = mdb.find_all_leaves(&res).unwrap();
assert_eq!(nodes.len(), 2);
assert_eq!(*nodes[0].hash(), chunks[0].hash);
assert_eq!(*nodes[1].hash(), chunks[1].hash);
assert_eq!(nodes[0].len(), chunks[0].length);
assert_eq!(nodes[1].len(), chunks[1].length);
assert_ne!(nodes[0].id(), nodes[1].id());
// we should get back original ids if we insert again
let mut staging = mdb.start_insertion_staging();
mdb.add_file(&mut staging, &chunks);
let res = mdb.finalize(staging);
let nodes2 = mdb.find_all_leaves(&res).unwrap();
assert_eq!(nodes2[0].id(), nodes[0].id());
assert_eq!(nodes2[1].id(), nodes[1].id());
// search by hash()
let nodes3 = [mdb.find_node(&h1).unwrap(), mdb.find_node(&h2).unwrap()];
assert_eq!(nodes3[0].id(), nodes[0].id());
assert_eq!(nodes3[1].id(), nodes[1].id());
// search by id
let nodes4 = [
mdb.find_node_by_id(nodes[0].id()).unwrap(),
mdb.find_node_by_id(nodes[1].id()).unwrap(),
];
assert_eq!(nodes4[0].id(), nodes[0].id());
assert_eq!(nodes4[1].id(), nodes[1].id());
assert!(mdb.all_invariant_checks());
}