changeset 70:f9823812f025

Test panicking condition in TableBuilder
author Lewin Bormann <lbo@spheniscida.de>
date Sat, 02 Jul 2016 22:48:31 +0200
parents d6a5c7e8d40f
children 2f016fa1f063
files src/table_builder.rs
diffstat 1 files changed, 26 insertions(+), 10 deletions(-) [+]
line wrap: on
line diff
--- a/src/table_builder.rs	Sat Jul 02 21:20:52 2016 +0200
+++ b/src/table_builder.rs	Sat Jul 02 22:48:31 2016 +0200
@@ -147,6 +147,9 @@
         }
     }
 
+    pub fn entries(&self) -> usize {
+        self.num_entries
+    }
 
     pub fn add(&mut self, key: &'a [u8], val: &[u8]) {
         assert!(self.data_block.is_some());
@@ -297,19 +300,32 @@
     #[test]
     fn test_table_builder() {
         let mut d = Vec::with_capacity(512);
-        {
-            let mut opt = Options::default();
-            opt.block_restart_interval = 3;
-            let mut b = TableBuilder::new(opt, StandardComparator, &mut d, BloomPolicy::new(4));
+        let mut opt = Options::default();
+        opt.block_restart_interval = 3;
+        let mut b = TableBuilder::new(opt, StandardComparator, &mut d, BloomPolicy::new(4));
+
+        let data = vec![("abc", "def"), ("abd", "dee"), ("bcd", "asa"), ("bsr", "a00")];
 
-            let data = vec![("abc", "def"), ("abd", "dee"), ("bcd", "asa"), ("bsr", "a00")];
+        for &(k, v) in data.iter() {
+            b.add(k.as_bytes(), v.as_bytes());
+        }
+
+        b.finish();
+    }
 
-            for &(k, v) in data.iter() {
-                b.add(k.as_bytes(), v.as_bytes());
-            }
+    #[test]
+    #[should_panic]
+    fn test_bad_input() {
+        let mut d = Vec::with_capacity(512);
+        let mut opt = Options::default();
+        opt.block_restart_interval = 3;
+        let mut b = TableBuilder::new(opt, StandardComparator, &mut d, BloomPolicy::new(4));
 
-            b.finish();
+        // Test two equal consecutive keys
+        let data = vec![("abc", "def"), ("abc", "dee"), ("bcd", "asa"), ("bsr", "a00")];
+
+        for &(k, v) in data.iter() {
+            b.add(k.as_bytes(), v.as_bytes());
         }
-        println!("{:?}", d);
     }
 }