changeset 355:e4e4662f047a

db_iter: Test behavior for deleted entries.
author Lewin Bormann <lbo@spheniscida.de>
date Thu, 05 Oct 2017 20:02:49 +0200
parents 55b7a2eef262
children 7c04cea08ac9
files src/db_iter.rs
diffstat 1 files changed, 19 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/src/db_iter.rs	Thu Oct 05 20:02:32 2017 +0200
+++ b/src/db_iter.rs	Thu Oct 05 20:02:49 2017 +0200
@@ -275,6 +275,7 @@
 mod tests {
     use super::*;
     use types::{current_key_val, Direction};
+    use test_util::LdbIteratorIter;
     use db_impl::testutil::*;
 
     #[test]
@@ -355,6 +356,7 @@
         let mut db = build_db();
         let mut iter = db.new_iter().unwrap();
 
+        // gca is the deleted entry.
         let keys: &[&[u8]] = &[b"aab", b"aaa", b"cab", b"eaa", b"aaa", b"iba", b"fba"];
         let vals: &[&[u8]] = &[b"val2", b"val0", b"val1", b"val1", b"val0", b"val2", b"val3"];
 
@@ -369,5 +371,22 @@
         assert!(!iter.valid());
         iter.seek(b"aab");
         assert!(iter.valid());
+
+        // Seek skips over deleted entry.
+        iter.seek(b"gca");
+        assert!(iter.valid());
+        assert_eq!((b"gda".to_vec(), b"val5".to_vec()),
+                   current_key_val(&iter).unwrap());
+    }
+
+    #[test]
+    fn db_iter_deleted_entry_not_returned() {
+        let mut db = build_db();
+        let mut iter = db.new_iter().unwrap();
+        let must_not_appear = b"gca";
+
+        for (k, _) in LdbIteratorIter::wrap(&mut iter) {
+            assert!(k.as_slice() != must_not_appear);
+        }
     }
 }