diff --git a/src/directory.rs b/src/directory.rs index 1cfbcc8..5cb2c52 100644 --- a/src/directory.rs +++ b/src/directory.rs @@ -158,4 +158,24 @@ mod tests { u16::MAX.into() ); } + + #[test] + fn iteration_order() { + let mut dir = Directory::empty(IfdPointer(0)); + assert_eq!(dir.len(), 0); + + let fake_entry = Entry::new_u64(crate::tags::Type::BYTE, 0, [0; 8]); + dir.extend((0..32).map(|i| { + let tag = Tag::Unknown(i); + let entry = fake_entry.clone(); + (tag, entry) + })); + + let iter_order: Vec = dir.iter().map(|(tag, _e)| tag.to_u16()).collect(); + assert_eq!( + iter_order, + (0..32).collect::>(), + "Tags must be in ascending order according to the specification" + ); + } } diff --git a/tests/subsubifds.rs b/tests/subsubifds.rs index 7dfd2ca..3fde959 100644 --- a/tests/subsubifds.rs +++ b/tests/subsubifds.rs @@ -29,7 +29,8 @@ fn decode_seek_chain() { assert!(!decoder.more_images()); // Ensure we can seek, to do this again. - decoder.seek_to_image(0) + decoder + .seek_to_image(0) .expect("Failed to seek to first image"); assert_eq!(Some(offset0), decoder.ifd_pointer()); decoder.next_image().unwrap();