file-ext 12.0.0

Collection of utility functions to work with files
Documentation
use crate::path_ext_impl::PathExtImpl;

#[test]
#[cfg(target_family = "windows")]
fn temp_folder() {
    let temp_folder_path = PathExtImpl::get_temp_folder_path().unwrap();
    assert!(temp_folder_path.starts_with("C:\\Users\\"));
    assert!(temp_folder_path.ends_with("\\AppData\\Local\\Temp"));
}

#[test]
#[cfg(target_family = "unix")]
fn temp_folder() {
    let temp_folder_path = PathExtImpl::get_temp_folder_path().unwrap();
    assert_eq!(temp_folder_path, "/tmp")
}

#[test]
#[cfg(target_family = "unix")]
fn build_path() {
    let root = PathExtImpl::root();
    let folder_up = PathExtImpl::folder_up();

    let node_list =
        [
            root.as_str(),
            "home",
            "someuser",
            "folder",
            "subfolder",
            "subsubfolder",
        ];

    let another_node_list =
        [
            folder_up.as_str(),
            folder_up.as_str(),
            "subfolder2",
            "subsubfolder2",
        ];
    let path = PathExtImpl::build_path(&node_list);
    let another_path = PathExtImpl::build_path(&another_node_list);

    assert_eq!("/home/someuser/folder/subfolder/subsubfolder", path);
    assert_eq!("../../subfolder2/subsubfolder2", another_path);
}


#[test]
#[cfg(target_family = "windows")]
fn build_path() {
    let root = PathExtImpl::root();

    let node_list =
        [
            root.as_str(),
            "Users",
            "someuser",
            "folder",
            "subfolder",
            "subsubfolder",
        ];

    let path = PathExtImpl::build_path(&node_list);

    assert_eq!("C:\\Users\\someuser\\folder\\subfolder\\subsubfolder", path);
}

#[test]
fn absolute_path_to_working_directory() {
    let boxed_path = PathExtImpl::working_directory();
    assert!(boxed_path.is_ok());
    let _path = boxed_path.unwrap();
}