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());
+        }
     }
 }