in common/rusty_leveldb_sgx/src/version_set.rs [1046:1088]
fn test_version_set_builder() {
let (v, opt) = make_version();
let v = share(v);
let mut fmd = FileMetaData::default();
fmd.num = 21;
fmd.size = 123;
fmd.smallest = LookupKey::new("klm".as_bytes(), 777)
.internal_key()
.to_vec();
fmd.largest = LookupKey::new("kop".as_bytes(), 700)
.internal_key()
.to_vec();
let mut ve = VersionEdit::new();
ve.add_file(1, fmd);
// This deletion should be undone by apply().
ve.delete_file(1, 21);
ve.delete_file(0, 2);
ve.set_compact_pointer(2, LookupKey::new("xxx".as_bytes(), 123).internal_key());
let mut b = Builder::new();
let mut ptrs: [Vec<u8>; NUM_LEVELS] = Default::default();
b.apply(&ve, &mut ptrs);
assert_eq!(
&[120 as u8, 120, 120, 1, 123, 0, 0, 0, 0, 0, 0],
ptrs[2].as_slice()
);
assert_eq!(2, b.deleted[0][0]);
assert_eq!(1, b.added[1].len());
let mut v2 = Version::new(
share(TableCache::new("db", opt.clone(), 100)),
opt.cmp.clone(),
);
b.save_to(&InternalKeyCmp(opt.cmp.clone()), &v, &mut v2);
// Second file in L0 was removed.
assert_eq!(1, v2.files[0].len());
// File was added to L1.
assert_eq!(4, v2.files[1].len());
assert_eq!(21, v2.files[1][3].borrow().num);
}