pub const ZIP_LOCAL_FILE_HEADER_MAGIC: [u8; 4] = [0x50, 0x4B, 0x03, 0x04];
pub const ZIP_EOCD_MAGIC: [u8; 4] = [0x50, 0x4B, 0x05, 0x06];
pub const AFF4_NAMESPACE: &str = "http://aff4.org/Schema#";
pub const URI_SCHEME: &str = "aff4://";
pub const METADATA_SEGMENT: &str = "information.turtle";
pub const VERSION_SEGMENT: &str = "version.txt";
pub const RDF_PREDICATES: &[&str] = &[
"aff4:type",
"aff4:size",
"aff4:chunkSize",
"aff4:chunksInSegment",
"aff4:compressionMethod",
"aff4:stored",
"aff4:dataStream",
"aff4:target",
];
pub const DEFAULT_CHUNK_SIZE: u64 = 32 * 1024;
pub const DEFAULT_CHUNKS_PER_SEGMENT: u64 = 2048;
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn zip_local_file_header_magic() {
assert_eq!(ZIP_LOCAL_FILE_HEADER_MAGIC, [0x50, 0x4B, 0x03, 0x04]);
assert_eq!(&ZIP_LOCAL_FILE_HEADER_MAGIC[0..2], b"PK");
}
#[test]
fn zip_end_of_central_directory_magic() {
assert_eq!(ZIP_EOCD_MAGIC, [0x50, 0x4B, 0x05, 0x06]);
}
#[test]
fn aff4_namespace_and_metadata_segment() {
assert_eq!(AFF4_NAMESPACE, "http://aff4.org/Schema#");
assert_eq!(METADATA_SEGMENT, "information.turtle");
assert_eq!(VERSION_SEGMENT, "version.txt");
}
#[test]
fn aff4_uri_scheme() {
assert_eq!(URI_SCHEME, "aff4://");
}
#[test]
fn well_known_rdf_predicates() {
for p in ["aff4:type", "aff4:chunkSize", "aff4:chunksInSegment", "aff4:stored"] {
assert!(RDF_PREDICATES.contains(&p), "missing predicate {p}");
}
}
#[test]
fn default_image_stream_geometry() {
assert_eq!(DEFAULT_CHUNK_SIZE, 32 * 1024);
assert_eq!(DEFAULT_CHUNKS_PER_SEGMENT, 2048);
}
}