From 9c0e544e79a4f7874dab449674a11d899bf61963 Mon Sep 17 00:00:00 2001 From: Igor Tolmachev Date: Tue, 16 Jul 2024 20:08:01 +0900 Subject: Add tests and fix bugs --- tests/zip.rs | 31 +++++++++++++++++++++++++------ 1 file changed, 25 insertions(+), 6 deletions(-) (limited to 'tests/zip.rs') diff --git a/tests/zip.rs b/tests/zip.rs index d02e96e..2c8fc56 100644 --- a/tests/zip.rs +++ b/tests/zip.rs @@ -1,3 +1,4 @@ +use archivator::zip::ZipError; use archivator::{Archive, Zip}; use std::io::{Read, Seek, SeekFrom}; @@ -15,10 +16,12 @@ fn test_zip_passwd() { vec!["store", "deflate", "bzip"] ); - assert!(archive.get_file_reader_by_name("store").is_err()); + assert!(archive + .get_file_reader_by_name("store") + .is_err_and(|e| e == ZipError::PasswordIsNotSpecified)); assert!(archive .get_file_reader_by_name_with_password("store", b"wrong_passwd") - .is_err()); + .is_err_and(|e| e == ZipError::IncorrectPassword)); for (name, check_data) in [ ("store", "1e643774f40510e37c6f3c451d9d"), @@ -62,22 +65,25 @@ fn test_zip() { assert_eq!(f.seek(SeekFrom::Start(0)).unwrap(), 0); let mut data = vec![0; 4]; - f.read(&mut data).unwrap(); + f.read_exact(&mut data).unwrap(); 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(); + f.read_exact(&mut data).unwrap(); assert_eq!(String::from_utf8(data).unwrap(), "file"); assert_eq!(f.seek(SeekFrom::End(-4)).unwrap(), 10); let mut data = vec![0; 4]; - f.read(&mut data).unwrap(); + f.read_exact(&mut data).unwrap(); assert_eq!(String::from_utf8(data).unwrap(), "data"); f.seek(SeekFrom::Start(7)).unwrap(); assert_eq!(f.seek(SeekFrom::Current(0)).unwrap(), 7); - assert!(f.seek(SeekFrom::End(-100)).is_err()); + assert!(f + .seek(SeekFrom::End(-100)) + .is_err_and(|e| e.get_ref().unwrap().to_string() + == "Invalid seek to a negative or overflowing position")); assert_eq!(f.seek(SeekFrom::Current(0)).unwrap(), 7); assert_eq!(f.seek(SeekFrom::Start(100)).unwrap(), 14); @@ -90,3 +96,16 @@ fn test_zip() { assert!(!f.is_seekable() || f.info().name == "store") } } + +#[test] +fn test_bad_zip() { + assert!(Archive::::read_from_file("tests/files/blank") + .is_err_and(|e| e == ZipError::EocdrNotFound)); + + assert_eq!( + Archive::::read_from_file("tests/files/empty.zip") + .unwrap() + .len(), + 0 + ); +} -- cgit v1.2.3