diff --git a/src/chunker.rs b/src/chunker.rs index ead0f36..8ed9b11 100644 --- a/src/chunker.rs +++ b/src/chunker.rs @@ -76,7 +76,7 @@ impl Iterator for ChunkIter { if size < min_size { self.finished = true; vec.truncate(size + open_buf_len); - return Some(Ok(vec)); + return if vec.is_empty() { None } else { Some(Ok(vec)) }; } self.rabin @@ -229,3 +229,33 @@ fn qp(p: i32, g: &Polynom64) -> Polynom64 { // add x res.add(&2).modulo(g) } + +#[cfg(test)] +mod tests { + use super::*; + use std::io::Cursor; + + #[test] + fn chunk_empty() { + let empty: Vec = vec![]; + let mut reader = Cursor::new(empty); + + let poly = random_poly().unwrap(); + let chunker = ChunkIter::new(&mut reader, 0, &poly); + + let chunks: Vec<_> = chunker.into_iter().collect(); + assert_eq!(0, chunks.len()); + } + + #[test] + fn chunk_empty_wrong_hint() { + let empty: Vec = vec![]; + let mut reader = Cursor::new(empty); + + let poly = random_poly().unwrap(); + let chunker = ChunkIter::new(&mut reader, 100, &poly); + + let chunks: Vec<_> = chunker.into_iter().collect(); + assert_eq!(0, chunks.len()); + } +}