Mercurial > lbo > hg > leveldb-rs
changeset 334:5956ad13bc49
db_iter: Fix bug in first call to advance() and add sanity test.
author | Lewin Bormann <lbo@spheniscida.de> |
---|---|
date | Mon, 02 Oct 2017 19:48:42 +0200 |
parents | 6f395945cac2 |
children | c444cc8d2606 |
files | src/db_iter.rs |
diffstat | 1 files changed, 12 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/src/db_iter.rs Mon Oct 02 19:48:17 2017 +0200 +++ b/src/db_iter.rs Mon Oct 02 19:48:42 2017 +0200 @@ -140,9 +140,7 @@ fn advance(&mut self) -> bool { if !self.valid() { self.seek_to_first(); - if !self.valid() { - return false; - } + return self.valid(); } if self.dir == Direction::Reverse { @@ -259,14 +257,23 @@ #[cfg(test)] mod tests { use super::*; + use types::current_key_val; use db_impl::testutil::*; // not yet passing - //#[test] + #[test] fn db_iter_basic_test() { let mut db = build_db(); let mut iter = db.new_iter().unwrap(); - assert!(iter.advance()); + // keys and values come from make_version(); they are each the latest entry. + let keys: &[&[u8]] = &[b"aaa", b"aab", b"aax", b"aba", b"bab", b"bba", b"cab", b"cba"]; + let vals: &[&[u8]] = &[b"val0", b"val2", b"val1", b"val3", b"val2", b"val3", b"val1", + b"val3"]; + + for (k, v) in keys.iter().zip(vals.iter()) { + assert!(iter.advance()); + assert_eq!((k.to_vec(), v.to_vec()), current_key_val(&iter).unwrap()); + } } }