Basic test for EntryByteReader
This commit is contained in:
1 parent
f890d22657
commit
a2996ab34e
2 files changed
+51
No files matched your search
@@ -194,3 +194,47 @@ impl<R: Read + Seek> Seek for EntryBytesReader<'_, R> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod tests {
|
||||||
|
use crate::{decoder::Decoder, tags::Tag};
|
||||||
|
use std::io::{Read as _, Seek as _, SeekFrom};
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn can_seek_tag_bytes() -> Result<(), crate::error::TiffError> {
|
||||||
|
let file = std::fs::File::open(concat!(
|
||||||
|
env!("CARGO_MANIFEST_DIR"),
|
||||||
|
"/tests/images/int8_rgb.tif"
|
||||||
|
))
|
||||||
|
.unwrap();
|
||||||
|
|
||||||
|
let mut decoder = Decoder::open(file).unwrap();
|
||||||
|
decoder.next_directory().unwrap();
|
||||||
|
|
||||||
|
let strips = decoder
|
||||||
|
.current_ifd()
|
||||||
|
.find_entry(Tag::StripByteCounts)
|
||||||
|
.expect("some strip byte count is present");
|
||||||
|
|
||||||
|
let mut buffer = crate::tags::ValueBuffer::default();
|
||||||
|
|
||||||
|
decoder
|
||||||
|
.current_ifd()
|
||||||
|
.find_tag_buf(Tag::StripByteCounts, &mut buffer)
|
||||||
|
.expect("some strip byte count is present");
|
||||||
|
|
||||||
|
let mut reader = decoder.read_entry(strips)?;
|
||||||
|
|
||||||
|
let mut data = vec![];
|
||||||
|
reader.read_to_end(&mut data)?;
|
||||||
|
assert_eq!(buffer.as_bytes(), data);
|
||||||
|
|
||||||
|
reader.seek(SeekFrom::Start(0))?;
|
||||||
|
reader.read_to_end(&mut data)?;
|
||||||
|
|
||||||
|
let (first, second) = data.split_at(data.len() / 2);
|
||||||
|
assert_eq!(first, second);
|
||||||
|
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -567,6 +567,13 @@ impl ValueBuffer {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Create an empty value buffer with `Byte` type. This type choice is arbitrary.
|
||||||
|
impl Default for ValueBuffer {
|
||||||
|
fn default() -> Self {
|
||||||
|
ValueBuffer::empty(Type::BYTE)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// Byte order of the TIFF file.
|
/// Byte order of the TIFF file.
|
||||||
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
|
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
|
||||||
pub enum ByteOrder {
|
pub enum ByteOrder {
|
||||||
|
|||||||
Reference in new issue
Block a user