in common/rusty_leveldb_sgx/src/table_reader.rs [495:543]
fn test_table_iterator_fwd_bwd() {
let (src, size) = build_table(build_data());
let data = build_data();
let table = Table::new_raw(options::for_test(), wrap_buffer(src), size).unwrap();
let mut iter = table.iter();
let mut i = 0;
while let Some((k, v)) = iter.next() {
assert_eq!(
(data[i].0.as_bytes(), data[i].1.as_bytes()),
(k.as_ref(), v.as_ref())
);
i += 1;
}
assert_eq!(i, data.len());
assert!(!iter.valid());
// Go forward again, to last entry.
while let Some((key, _)) = iter.next() {
if key.as_slice() == b"zzz" {
break;
}
}
assert!(iter.valid());
// backwards count
let mut j = 0;
while iter.prev() {
if let Some((k, v)) = current_key_val(&iter) {
j += 1;
assert_eq!(
(
data[data.len() - 1 - j].0.as_bytes(),
data[data.len() - 1 - j].1.as_bytes()
),
(k.as_ref(), v.as_ref())
);
} else {
break;
}
}
// expecting 7 - 1, because the last entry that the iterator stopped on is the last entry
// in the table; that is, it needs to go back over 6 entries.
assert_eq!(j, 6);
}