#[derive(Debug, Clone)]
pub struct SpecialFileInfo {
pub name: &'static str,
pub encrypted: bool,
pub compressed: bool,
}
pub fn get_special_file_info(filename: &str) -> Option<SpecialFileInfo> {
match filename {
"(listfile)" => Some(SpecialFileInfo {
name: "(listfile)",
encrypted: false,
compressed: true,
}),
"(attributes)" => Some(SpecialFileInfo {
name: "(attributes)",
encrypted: false,
compressed: true,
}),
"(signature)" => Some(SpecialFileInfo {
name: "(signature)",
encrypted: false,
compressed: false,
}),
"(user data)" => Some(SpecialFileInfo {
name: "(user data)",
encrypted: false,
compressed: false,
}),
_ => None,
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_special_file_info() {
assert!(get_special_file_info("(listfile)").is_some());
assert!(get_special_file_info("(attributes)").is_some());
assert!(get_special_file_info("(signature)").is_some());
assert!(get_special_file_info("(user data)").is_some());
assert!(get_special_file_info("regular_file.txt").is_none());
let info = get_special_file_info("(attributes)").unwrap();
assert!(!info.encrypted);
assert!(info.compressed);
}
}