use use_archive::{
ArchiveEncoding, ArchiveEntry, ArchiveEntryKind, ArchiveFormat, ArchiveManifest, ArchivePolicy,
Bzip2Level, CabCompressionMethod, CompressionFormat, CompressionIntent, CompressionLevel,
CompressionSettings, CpioFormat, MtreeKeyword, RarVolumeKind, SevenZipFormat, WarcRecordKind,
ZipCompressionMethod, is_bzip2_filename, is_safe_relative_archive_path,
prelude::{ArchivePolicy as PreludeArchivePolicy, SevenZipFormat as PreludeSevenZipFormat},
};
#[test]
fn facade_root_reexports_common_archive_workflow() {
let encoding = ArchiveEncoding::from_extension("release.tar.zst");
let entry = ArchiveEntry::new("docs/readme.md", ArchiveEntryKind::File).with_size(128);
let manifest = ArchiveManifest::new(encoding).with_entries(vec![entry]);
let policy = ArchivePolicy::strict();
let settings = CompressionSettings::new(CompressionLevel::Balanced, CompressionIntent::Size);
assert_eq!(encoding.archive, ArchiveFormat::Tar);
assert_eq!(encoding.compression, CompressionFormat::Zstd);
assert_eq!(manifest.file_count(), 1);
assert_eq!(manifest.total_size(), 128);
assert!(policy.allows_entries(manifest.entries()));
assert!(is_safe_relative_archive_path("docs/readme.md"));
assert_eq!(settings.intent, CompressionIntent::Size);
}
#[test]
fn facade_namespaces_and_prelude_are_available() {
let encoding = use_archive::format::ArchiveEncoding::from_extension("bundle.zip");
let prelude_policy: PreludeArchivePolicy = PreludeArchivePolicy::strict();
let method = use_archive::zip::ZipCompressionMethod::from_code(8);
assert_eq!(encoding.archive, ArchiveFormat::Zip);
assert_eq!(method, ZipCompressionMethod::Deflated);
assert!(!prelude_policy.allow_symlinks);
assert_eq!(
use_archive::tar::TarEntryType::from_typeflag(b'5').as_str(),
"directory"
);
assert_eq!(use_archive::gzip::GZIP_ENCODING_LABEL, "gzip");
assert_eq!(use_archive::xz::XZ_EXTENSION, "xz");
assert_eq!(use_archive::zstd::ZSTD_EXTENSION, "zst");
}
#[test]
fn facade_reexports_second_wave_archive_primitives() {
let cpio_encoding = ArchiveEncoding::from_extension("initramfs.cpio.gz");
let warc_encoding = ArchiveEncoding::from_extension("crawl.arc.gz");
assert_eq!(cpio_encoding.archive, ArchiveFormat::Cpio);
assert_eq!(cpio_encoding.compression, CompressionFormat::Gzip);
assert_eq!(warc_encoding.archive, ArchiveFormat::Warc);
assert!(is_bzip2_filename("release.tar.bz2"));
assert_eq!(Bzip2Level::Best.as_str(), "best");
assert_eq!(CpioFormat::NewAscii.as_str(), "new-ascii");
assert_eq!(CabCompressionMethod::Lzx.as_str(), "lzx");
assert_eq!(SevenZipFormat::SevenZip.as_str(), "7z");
assert_eq!(PreludeSevenZipFormat::SplitVolume.as_str(), "7z-volume");
assert_eq!(RarVolumeKind::MultiPart.as_str(), "multi-part");
assert_eq!(WarcRecordKind::Response.as_str(), "response");
assert_eq!(MtreeKeyword::Sha256Digest.as_str(), "sha256digest");
}
#[test]
fn facade_reexports_second_wave_namespaces() {
assert!(use_archive::seven_zip::is_7z_filename("bundle.7z.001"));
assert!(use_archive::rar::is_rar_filename("backup.part1.rar"));
assert!(use_archive::warc::is_warc_filename("crawl.warc.gz"));
assert!(use_archive::mtree::is_mtree_filename("manifest.mtree.gz"));
assert_eq!(
use_archive::ar::ArEntryKind::SymbolTable.as_str(),
"symbol-table"
);
assert_eq!(
use_archive::iso::IsoVolumeKind::Bootable.as_str(),
"bootable"
);
assert_eq!(use_archive::compression::bzip2::BZIP2_EXTENSION, "bz2");
assert_eq!(use_archive::brotli::BROTLI_EXTENSION, "br");
assert_eq!(use_archive::lz4::LZ4_EXTENSION, "lz4");
}