From 5d3d32ded672b67471d9d7c85ebbe691129cc51c Mon Sep 17 00:00:00 2001 From: Igor Tolmachev Date: Mon, 1 Jul 2024 19:12:40 +0900 Subject: Add compression support (lzma and xz are broken) --- tests/zip.rs | 34 ++++++++++++++++++++++------------ 1 file changed, 22 insertions(+), 12 deletions(-) (limited to 'tests/zip.rs') diff --git a/tests/zip.rs b/tests/zip.rs index e5872c5..eb195f2 100644 --- a/tests/zip.rs +++ b/tests/zip.rs @@ -3,7 +3,7 @@ use std::io::{Read, Seek, SeekFrom}; #[test] fn test_zip() { - let mut archive = Archive::>::read_from_file("tests/files/zip.zip").unwrap(); + let mut archive = Archive::>::read_from_file("tests/files/archive.zip").unwrap(); assert_eq!(archive.comment(), "archive comment"); assert_eq!( @@ -12,36 +12,46 @@ fn test_zip() { .iter() .map(|f| &f.name) .collect::>(), - vec!["b", "c", "a"] + vec!["bzip", "deflate", "lzma", "store", "xz"] ); - let mut f = archive.get_file_reader(2).unwrap(); + let mut f = archive.get_file_reader("store").unwrap(); let mut data = String::new(); f.read_to_string(&mut data).unwrap(); - assert_eq!(data, "file data \"a\""); + assert_eq!(data, "test file data"); assert_eq!(f.seek(SeekFrom::Start(5)).unwrap(), 5); let mut data = String::new(); f.read_to_string(&mut data).unwrap(); - assert_eq!(data, "data \"a\""); + assert_eq!(data, "file data"); assert_eq!(f.seek(SeekFrom::Start(0)).unwrap(), 0); let mut data = vec![0; 4]; f.read(&mut data).unwrap(); - assert_eq!(String::from_utf8(data).unwrap(), "file"); + assert_eq!(String::from_utf8(data).unwrap(), "test"); assert_eq!(f.seek(SeekFrom::Current(1)).unwrap(), 5); let mut data = vec![0; 4]; f.read(&mut data).unwrap(); - assert_eq!(String::from_utf8(data).unwrap(), "data"); + assert_eq!(String::from_utf8(data).unwrap(), "file"); - assert_eq!(f.seek(SeekFrom::End(-3)).unwrap(), 10); - let mut data = vec![0; 3]; + assert_eq!(f.seek(SeekFrom::End(-4)).unwrap(), 10); + let mut data = vec![0; 4]; f.read(&mut data).unwrap(); - assert_eq!(String::from_utf8(data).unwrap(), "\"a\""); + assert_eq!(String::from_utf8(data).unwrap(), "data"); - assert_eq!(f.seek(SeekFrom::Current(0)).unwrap(), 13); + f.seek(SeekFrom::Start(7)).unwrap(); + assert_eq!(f.seek(SeekFrom::Current(0)).unwrap(), 7); f.seek(SeekFrom::End(-100)).unwrap_err(); - assert_eq!(f.seek(SeekFrom::Current(0)).unwrap(), 13); + assert_eq!(f.seek(SeekFrom::Current(0)).unwrap(), 7); + + assert_eq!(f.seek(SeekFrom::Start(100)).unwrap(), 14); + + for name in ["store", "deflate", "bzip", "lzma", "xz"] { + let mut f = archive.get_file_reader(name).unwrap(); + let mut data = String::new(); + f.read_to_string(&mut data).unwrap(); + assert_eq!(data, "test file data"); + } } -- cgit v1.2.3