use acr::compression::ZipMethod as Method; use dh::recommended::*; use neozip::{integrity, File, FileSource}; #[test] fn create_000() { let file = b"Hello, world!\n".to_vec(); let mut reader = dh::data::read_ref(&file); let files = vec![FileSource { reader: &mut reader, metadata: File { path: "test.txt".to_string(), ..Default::default() }, }]; neozip::create_fs(files, "tests/samples/c000.zip", 1024).unwrap(); let mut reader = dh::file::open_r("tests/samples/c000.zip").unwrap(); let metadata = neozip::metadata(&mut reader).unwrap(); assert_eq!(metadata.files.len(), 1); assert_eq!(metadata.files[0].path, "test.txt"); assert_eq!(metadata.files[0].size, 14); assert_eq!(metadata.files[0].compression, Method::Stored); assert_eq!(metadata.files[0].uncompressed_size, 14); assert!(integrity::verify_all(&mut reader, &metadata.files, 1024).unwrap()); } #[test] fn create_001() { let file1 = b"Hello, world!\n".to_vec(); let file2 = b"Hello, world! 2\n".to_vec(); let mut reader1 = dh::data::read_ref(&file1); let mut reader2 = dh::data::read_ref(&file2); let files = vec![ FileSource { reader: &mut reader1, metadata: File { path: "test.txt".to_string(), ..Default::default() }, }, FileSource { reader: &mut reader2, metadata: File { path: "test2.txt".to_string(), ..Default::default() }, }, ]; neozip::create_fs(files, "tests/samples/c001.zip", 1024).unwrap(); let mut reader = dh::file::open_r("tests/samples/c001.zip").unwrap(); let metadata = neozip::metadata(&mut reader).unwrap(); assert_eq!(metadata.files.len(), 2); assert_eq!(metadata.files[0].path, "test.txt"); assert_eq!(metadata.files[0].size, 14); assert_eq!(metadata.files[0].compression, Method::Stored); assert_eq!(metadata.files[0].uncompressed_size, 14); assert_eq!(metadata.files[1].path, "test2.txt"); assert_eq!(metadata.files[1].size, 16); assert_eq!(metadata.files[1].compression, Method::Stored); assert_eq!(metadata.files[1].uncompressed_size, 16); assert!(integrity::verify_all(&mut reader, &metadata.files, 1024).unwrap()); } #[test] fn create_002() { let file1 = b"Hello, world!\n".to_vec(); let file2 = b"Hello, world!\n".to_vec(); let e = vec![]; let mut reader1 = dh::data::read_ref(&file1); let mut reader2 = dh::data::read_ref(&file2); let mut reader_empty = dh::data::read_ref(&e); let files = vec![ FileSource { reader: &mut reader_empty, metadata: File { path: "test".to_string(), directory: true, ..Default::default() }, }, FileSource { reader: &mut reader1, metadata: File { path: "test/test.txt".to_string(), ..Default::default() }, }, FileSource { reader: &mut reader2, metadata: File { path: "test.txt".to_string(), ..Default::default() }, }, ]; neozip::create_fs(files, "tests/samples/c002.zip", 1024).unwrap(); let mut reader = dh::file::open_r("tests/samples/c002.zip").unwrap(); let metadata = neozip::metadata(&mut reader).unwrap(); assert_eq!(metadata.files.len(), 3); assert_eq!(metadata.files[0].path, "test/"); assert_eq!(metadata.files[0].size, 0); assert_eq!(metadata.files[0].compression, Method::Stored); assert_eq!(metadata.files[0].uncompressed_size, 0); assert!(metadata.files[0].directory); assert_eq!(metadata.files[1].path, "test/test.txt"); assert_eq!(metadata.files[1].size, 14); assert_eq!(metadata.files[1].compression, Method::Stored); assert_eq!(metadata.files[1].uncompressed_size, 14); assert_eq!(metadata.files[2].path, "test.txt"); assert_eq!(metadata.files[2].size, 14); assert_eq!(metadata.files[2].compression, Method::Stored); assert_eq!(metadata.files[2].uncompressed_size, 14); assert!(integrity::verify_all(&mut reader, &metadata.files, 1024).unwrap()); }