Mercurial > lbo > hg > leveldb-rs
changeset 31:6807859c7538
Implement end-to-end tests for Block, BlockBuilder, BlockIter
author | Lewin Bormann <lbo@spheniscida.de> |
---|---|
date | Sun, 12 Jun 2016 14:30:53 +0200 |
parents | f8517432c11d |
children | f750122fd546 |
files | src/block.rs |
diffstat | 1 files changed, 48 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/src/block.rs Sun Jun 12 14:30:35 2016 +0200 +++ b/src/block.rs Sun Jun 12 14:30:53 2016 +0200 @@ -249,6 +249,53 @@ #[cfg(test)] mod tests { + use super::*; + use types::*; + + fn get_data() -> Vec<(&'static [u8], &'static [u8])> { + vec![("key1".as_bytes(), "value1".as_bytes()), + ("loooooooooooooooooooooooooooooooooongerkey1".as_bytes(), "shrtvl1".as_bytes()), + ("medium length key 1".as_bytes(), "some value 2".as_bytes()), + ("prefix_key1".as_bytes(), "value".as_bytes()), + ("prefix_key2".as_bytes(), "value".as_bytes()), + ("prefix_key3".as_bytes(), "value".as_bytes())] + } + #[test] - fn test_iter() {} + fn test_block_builder() { + let mut o = Options::default(); + o.block_restart_interval = 3; + + let mut builder = BlockBuilder::new(o); + + for &(k, v) in get_data().iter() { + builder.add(k, v); + assert!(builder.counter <= 3); + } + + let block = builder.finish(); + assert_eq!(block.len(), 145); + } + + #[test] + fn test_build_iterate() { + let data = get_data(); + let mut builder = BlockBuilder::new(Options::default()); + + for &(k, v) in data.iter() { + builder.add(k, v); + } + + let block_contents = builder.finish(); + + let block = Block::new(block_contents); + let block_iter = block.iter(); + let mut i = 0; + for (k, v) in block_iter { + assert_eq!(&k[..], data[i].0); + assert_eq!(v, data[i].1); + i += 1; + } + assert_eq!(i, data.len()); + } }