normalizefs 0.0.11

Normalization of file system paths
Documentation
use super::pathconv::path_to_vector as to_vector;
use super::resolve_updirs;


//   Resolves updirs /../

#[test]
fn remove_nothing() {
   let mut p = to_vector("nothing/here");
   resolve_updirs(&mut p, '/');
   assert_eq!(p, to_vector("nothing/here"));
}

#[test]
fn remove_end_subdir_test() {
   let mut p = to_vector("nothing/here/../");
   resolve_updirs(&mut p, '/');
   assert_eq!(p, to_vector("nothing/"));
}

#[test]
fn remove_mid_subdir_test() {
   let mut p = to_vector("nothing/here/../man");
   resolve_updirs(&mut p, '/');
   assert_eq!(p, to_vector("nothing/man"));
}

#[test]
fn remove_two_mid_subdir_test() {
   let mut p = to_vector("nothing/here/../../man");
   resolve_updirs(&mut p, '/');
   assert_eq!(p, to_vector("man"));
}

#[test]
fn too_short() {
   let mut p = to_vector("/");
   resolve_updirs(&mut p, '/');
   assert_eq!(p, to_vector("/"));
}

#[test]
fn slash_dot_dot_slash() {
   let mut p = to_vector("/../");
   resolve_updirs(&mut p, '/');
   assert_eq!(p, to_vector("/"));
}

#[test]
fn only_one_dir() {
   let mut p = to_vector("dir2/../");
   resolve_updirs(&mut p, '/');
   assert_eq!(p, to_vector(""));
}

#[test]
fn only_one_dir_w_tail() {
   let mut p = to_vector("dir2/../tail");
   resolve_updirs(&mut p, '/');
   assert_eq!(p, to_vector("tail"));
}

#[test]
fn normalize_front_updir_w_one_file() {
   let mut p = to_vector("/../file");
   resolve_updirs(&mut p, '/');
   assert_eq!(p, to_vector("/file"));
}