From c7198f817b4ad366df428e0ee190f05c7bea6106 Mon Sep 17 00:00:00 2001 From: Colin Finck Date: Fri, 21 Jan 2022 22:10:48 +0100 Subject: Add a test that checks reading the "empty-file" and its zero length. --- src/attribute.rs | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/src/attribute.rs b/src/attribute.rs index 9b8bb2a..94b5fb8 100644 --- a/src/attribute.rs +++ b/src/attribute.rs @@ -701,3 +701,38 @@ impl<'n, 'f> Iterator for NtfsAttributesRaw<'n, 'f> { } impl<'n, 'f> FusedIterator for NtfsAttributesRaw<'n, 'f> {} + +#[cfg(test)] +mod tests { + use crate::indexes::NtfsFileNameIndex; + use crate::ntfs::Ntfs; + use crate::traits::NtfsReadSeek; + + #[test] + fn test_empty_data_attribute() { + let mut testfs1 = crate::helpers::tests::testfs1(); + let mut ntfs = Ntfs::new(&mut testfs1).unwrap(); + ntfs.read_upcase_table(&mut testfs1).unwrap(); + let root_dir = ntfs.root_directory(&mut testfs1).unwrap(); + + // Find the "empty-file". + let root_dir_index = root_dir.directory_index(&mut testfs1).unwrap(); + let mut root_dir_finder = root_dir_index.finder(); + let entry = + NtfsFileNameIndex::find(&mut root_dir_finder, &ntfs, &mut testfs1, "empty-file") + .unwrap() + .unwrap(); + let empty_file = entry.to_file(&ntfs, &mut testfs1).unwrap(); + + let data_attribute_item = empty_file.data(&mut testfs1, "").unwrap().unwrap(); + let data_attribute = data_attribute_item.to_attribute(); + assert_eq!(data_attribute.value_length(), 0); + + let mut data_attribute_value = data_attribute.value().unwrap(); + assert!(data_attribute_value.is_empty()); + + let mut buf = [0u8; 5]; + let bytes_read = data_attribute_value.read(&mut testfs1, &mut buf).unwrap(); + assert_eq!(bytes_read, 0); + } +} -- cgit v1.2.3