use std::path::Path;
use super::normalize_posix;
fn normalize(path: impl AsRef<Path>) -> String {
normalize_posix(path).to_str().unwrap().to_owned()
}
#[test]
fn double_separators_test() {
let p = "//here//we//go";
assert_eq!(normalize(p), "/here/we/go");
}
#[test]
fn start_dot_slash_test() {
let p = "./here/we/go";
assert_eq!(normalize(p), "here/we/go");
}
#[test]
fn double_start_dot_slash_test() {
let p = "././here/we/go";
assert_eq!(normalize(p), "here/we/go");
}
#[test]
fn remove_slash_dot_slash_test() {
let p = "here/./we/./go";
assert_eq!(normalize(p), "here/we/go");
}
#[test]
fn remove_end_dot_test() {
let p = "here/we/go/.";
assert_eq!(normalize(p), "here/we/go/");
}
#[test]
fn resolve_end_updir_test() {
let p1 = "here/we/go/..";
assert_eq!(normalize(p1), "here/we/");
let p2 = "here/we/go/../";
assert_eq!(normalize(p2), "here/we/");
let p3 = "here/we/go/../.";
assert_eq!(normalize(p3), "here/we/");
}
#[test]
fn do_not_travel_outside_root_double_separators_test() {
let p = "//here//..//..//..//man";
assert_eq!(normalize(p), "/man");
}
#[test]
fn travel_outside_root_relative_test() {
let p = "here/../../man";
assert_eq!(normalize(p), "../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), "/man");
}