#![allow(non_snake_case)]
use std::path::Path;
use super::normalize_windows;
fn normalize(path: impl AsRef<Path>) -> String {
normalize_windows(path).to_str().unwrap().to_owned()
}
#[test]
fn replace_forward_slashes_test() {
let p = "//here/we/go";
assert_eq!(normalize(p), r"\\here\we\go");
}
#[test]
fn replace_forward_slashes_mixed_test() {
let p = r"//here/we\go";
assert_eq!(normalize(p), r"\\here\we\go");
}
#[test]
fn double_separators_keep_unc_test() {
let p = r"\\here\we\go";
assert_eq!(normalize(p), r"\\here\we\go");
}
#[test]
fn double_separators_normalize_unc_test() {
let p = r"\\here\\we\go";
assert_eq!(normalize(p), r"\\here\we\go");
}
#[test]
fn colapse_all_multiple_separators_test() {
let p = r"\here\\we\\go\\\";
assert_eq!(normalize(p), r"\here\we\go\");
}
#[test]
fn colapse_UNC_mixed_separators_test() {
let p = r"/\here//\\we//\\go////\\\";
assert_eq!(normalize(p), r"\\here\we\go\");
}
#[test]
fn normalize_UNC_case_test() {
let p = r"\\HeRE\\iS\\UNC";
assert_eq!(normalize(p), r"\\here\is\UNC");
}
#[test]
fn drive_letter_to_uppercase() {
let p = r"c:\\\HeRE\\\iS\\\DriVe";
assert_eq!(normalize(p), r"C:\HeRE\iS\DriVe");
}
#[test]
fn drive_root_travel_normalize() {
let p = r"c:/here/../../../man";
assert_eq!(normalize(p), r"C:\man");
}
#[test]
fn start_dot_slash_test() {
let p = "./here/we/go";
assert_eq!(normalize(p), r"here\we\go");
}
#[test]
fn remove_slash_dot_slash_test() {
let p = r"here\./we\./go";
assert_eq!(normalize(p), r"here\we\go");
}
#[test]
fn remove_end_dot_test() {
let p = r"here/we/go\.";
assert_eq!(normalize(p), r"here\we\go\");
}
#[test]
fn resolve_end_updir_test() {
let p1 = r"here\we\go/..";
assert_eq!(normalize(p1), r"here\we\");
let p2 = "here/we/go/../";
assert_eq!(normalize(p2), r"here\we\");
let p3 = "here/we/go/../.";
assert_eq!(normalize(p3), r"here\we\");
}
#[test]
fn do_not_travel_outside_root_double_separators_test() {
let p = "/here//..//..//..//man";
assert_eq!(normalize(p), r"\man");
}
#[test]
fn travel_outside_root_relative_test() {
let p = "here/../../man";
assert_eq!(normalize(p), r"..\man");
}
#[test]
fn travel_one_dir_up_test() {
let p = "here/../man";
assert_eq!(normalize(p), "man");
}
#[test]
fn do_not_travel_outside_root_test() {
let p = "/here/../../../man";
assert_eq!(normalize(p), r"\man");
}
#[test]
fn updirs_up_to_UNC() {
let p = r"//here/../../../man";
assert_eq!(normalize(p), r"\\man");
}
#[test]
fn google_code_assist_1() {
let input_path = "\\\\.\\C:\\temp\\test.txt";
assert_eq!(normalize(input_path), r"\\C:\temp\test.txt");
}