#[cfg(test)]
mod tests {
use crate::audit::utils::windows_reserved_name_checker::is_windows_reserved_name;
use std::path::PathBuf;
fn reserved(name: &str) -> bool {
is_windows_reserved_name(&PathBuf::from(name))
}
#[test]
fn basic_reserved_devices() {
assert!(reserved("CON"));
assert!(reserved("PRN"));
assert!(reserved("AUX"));
assert!(reserved("NUL"));
assert!(reserved("con"));
assert!(reserved("PrN"));
}
#[test]
fn com_ranges_and_superscripts() {
for n in 1..=9 {
let s = format!("COM{n}");
assert!(reserved(&s), "{} should be reserved", s);
}
assert!(reserved("COM¹"));
assert!(reserved("COM²"));
assert!(reserved("COM³"));
}
#[test]
fn lpt_ranges_and_superscripts() {
for n in 1..=9 {
let s = format!("LPT{n}");
assert!(reserved(&s), "{} should be reserved", s);
}
assert!(reserved("LPT¹"));
assert!(reserved("LPT²"));
assert!(reserved("LPT³"));
}
#[test]
fn reserved_with_extensions_and_trailing_dots() {
assert!(reserved("NUL.txt"));
assert!(reserved("lpt9.tar.gz"));
assert!(reserved("CON."));
assert!(reserved("CON..."));
assert!(reserved("NUL.txt..."));
}
#[test]
fn non_reserved_similar_names() {
assert!(!reserved("CONSOLE"));
assert!(!reserved("LPT10"));
assert!(!reserved("COM0"));
assert!(!reserved("COM")); assert!(!reserved("LPT")); assert!(!reserved("NULl")); assert!(!reserved("AUX1")); }
}