use super::{normalize_bytes, count_prefix_parts, safe_component};
#[test]
fn target_separator_semantics_are_explicit() {
assert_eq!(normalize_bytes(b"C:\\folder\\file", true), b"C:/folder/file");
assert_eq!(normalize_bytes(b"C:\\folder\\file", false), b"C:\\folder\\file");
assert_eq!(normalize_bytes(b"C:folder\\file", true), b"C:/folder/file");
assert_eq!(normalize_bytes(b"C:/folder/file", true), b"C:/folder/file");
assert_eq!(normalize_bytes(b"C:", true), b"C:");
assert_eq!(normalize_bytes(b"C", true), b"C");
assert_eq!(normalize_bytes(b"", true), b"");
assert_eq!(normalize_bytes(b"a:b", true), b"a:/b");
assert_eq!(normalize_bytes(b"1:b", true), b"1:b");
assert_eq!(normalize_bytes(b"a-b", true), b"a-b");
}
#[test]
fn prefix_parts_count_nonempty_runs_with_both_separators() {
assert_eq!(count_prefix_parts(b"C:"), 1);
assert_eq!(count_prefix_parts(b"\\\\server\\share"), 2);
assert_eq!(count_prefix_parts(b"//server/share"), 2);
assert_eq!(count_prefix_parts(b"\\\\?\\UNC\\server\\share"), 4);
assert_eq!(count_prefix_parts(b"/\\//"), 0);
assert_eq!(count_prefix_parts(b""), 0);
}
#[test]
fn prefix_parts_count_navigation_spellings_and_device_markers() {
assert_eq!(count_prefix_parts(br"\\.\COM1"), 2);
assert_eq!(count_prefix_parts(br"\\.\C:"), 2);
assert_eq!(count_prefix_parts(br"\\.\"), 1);
assert_eq!(count_prefix_parts(br"\\.\.."), 2);
assert_eq!(count_prefix_parts(br"\\server\.."), 2);
assert_eq!(count_prefix_parts(br"\\?\a/./b"), 4);
}
#[test]
fn display_encoding_keeps_adversarial_native_bytes_distinct() {
assert_eq!(safe_component(b"\xff\xfe"), "\\xff\\xfe");
assert_eq!(safe_component(b"a:b\\c\t\0\x7f"), "a\\x3ab\\\\c\\u{9}\\u{0}\\u{7f}");
assert_eq!(safe_component("é".as_bytes()), "é");
assert_eq!(safe_component(b""), "");
}