normalizefs 0.0.11

Normalization of file system paths
Documentation
use std::path::Path;
use super::pathconv::path_to_vector as to_vector;
use super::pathconv::vector_to_pathbuf as to_pathbuf;
use super::normalize_drive;


//   drive letter normalizer tests

fn normalize(path: impl AsRef<Path>) -> String {
   let mut vec = to_vector(path);
   normalize_drive(&mut vec);
   to_pathbuf(vec).to_str().unwrap().to_owned()
}

/*
   Windows drive normalizer converts drive letter to uppercase
   while rest of path is left untouched.

   Cases:
     0. Not Drive Path
     1. Normalize Drive letter only
     2. Normalize Drive, left rest untouched
*/

/* test case zero */
#[test]
fn empty() {
   let p = "";
   assert_eq!(normalize(p), r"");
}

/* test case zero */
#[test]
fn not_drive() {
   let p = r"\Directory\File";
   assert_eq!(normalize(p), r"\Directory\File");
}

/* test case for 1 */
#[test]
fn normalize_drive_root() {
   let p = r"c:\";
   assert_eq!(normalize(p), r"C:\");
}

/* test case for 1 */
#[test]
fn normalize_drive_name_only() {
   let p = r"c:";
   assert_eq!(normalize(p), r"C:");
}

/* test case for 1 */
#[test]
fn normalize_drive_name_no_case_change() {
   let p = r"C:";
   assert_eq!(normalize(p), r"C:");
}

/* test case for 2 */
#[test]
fn normalize_only_drive_test() {
   let p = r"c:\SeRVER\";
   assert_eq!(normalize(p), r"C:\SeRVER\");
}