Mercurial > lbo > hg > leveldb-rs
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); } }