Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/windirstat/ntfs.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorColin Finck <colin@reactos.org>2022-01-22 00:10:48 +0300
committerColin Finck <colin@reactos.org>2022-01-22 00:10:48 +0300
commitc7198f817b4ad366df428e0ee190f05c7bea6106 (patch)
tree23e2fa5139d9fb7b7b687f4a2c674f0ffaa595a6
parent5373a81886551e9cc86db681e8be41052e572e05 (diff)
Add a test that checks reading the "empty-file" and its zero length.
-rw-r--r--src/attribute.rs35
1 files changed, 35 insertions, 0 deletions
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);
+ }
+}