From 51694e1f0b2730915e0a57ec6d8de503cf06ef9a Mon Sep 17 00:00:00 2001 From: Igor Tolmachev Date: Thu, 27 Jun 2024 16:15:00 +0900 Subject: Create file driver and implement file reader --- tests/zip.rs | 33 ++++++++++++++++++++++++++++++++- 1 file changed, 32 insertions(+), 1 deletion(-) (limited to 'tests/zip.rs') diff --git a/tests/zip.rs b/tests/zip.rs index 65244c1..25f1f76 100644 --- a/tests/zip.rs +++ b/tests/zip.rs @@ -1,8 +1,9 @@ use archivator::{Archive, Zip}; +use std::io::{Read, Seek, SeekFrom}; #[test] fn test_zip() { - let archive = Archive::>::read_from_file("tests/files/zip.zip").unwrap(); + let mut archive = Archive::>::read_from_file("tests/files/zip.zip").unwrap(); assert_eq!(archive.comment(), "archive comment"); assert_eq!( @@ -13,4 +14,34 @@ fn test_zip() { .collect::>(), vec!["a", "b", "c"] ); + + let mut f = archive.get_file_reader("a").unwrap(); + + let mut data = String::new(); + f.read_to_string(&mut data).unwrap(); + assert_eq!(data, "file data \"a\""); + + 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!(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!(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!(f.seek(SeekFrom::End(-3)).unwrap(), 10); + let mut data = vec![0; 3]; + f.read(&mut data).unwrap(); + assert_eq!(String::from_utf8(data).unwrap(), "\"a\""); + + assert_eq!(f.seek(SeekFrom::Current(0)).unwrap(), 13); + f.seek(SeekFrom::End(-100)).unwrap_err(); + assert_eq!(f.seek(SeekFrom::Current(0)).unwrap(), 13); } -- cgit v1.2.3