Merge pull request #56 from rustic-rs/chunk-empty

chunker: Fix treatment of empty files
This commit is contained in:
aawsome 2022-07-07 10:16:30 +02:00 committed by GitHub
commit ddc1b6f76d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -76,7 +76,7 @@ impl<R: Read> Iterator for ChunkIter<R> {
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<u8> = 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<u8> = 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());
}
}