tiff/encoder/compression/
uncompressed.rs

1use crate::encoder::compression::*;
2
3/// The default algorithm which does not compress at all.
4#[derive(Debug, Clone, Copy, PartialEq, Eq, Default)]
5pub struct Uncompressed;
6
7impl Compression for Uncompressed {
8    const COMPRESSION_METHOD: CompressionMethod = CompressionMethod::None;
9
10    fn get_algorithm(&self) -> Compressor {
11        Compressor::Uncompressed(*self)
12    }
13}
14
15impl CompressionAlgorithm for Uncompressed {
16    fn write_to<W: Write>(&mut self, writer: &mut W, bytes: &[u8]) -> Result<u64, io::Error> {
17        writer.write(bytes).map(|byte_count| byte_count as u64)
18    }
19}
20
21#[cfg(test)]
22mod tests {
23    use super::*;
24    use crate::encoder::compression::tests::TEST_DATA;
25    use std::io::Cursor;
26
27    #[test]
28    fn test_no_compression() {
29        let mut compressed_data = Vec::<u8>::new();
30        let mut writer = Cursor::new(&mut compressed_data);
31        Uncompressed.write_to(&mut writer, TEST_DATA).unwrap();
32        assert_eq!(TEST_DATA, compressed_data);
33    }
34}