mirror of
https://github.com/c3lang/c3c.git
synced 2026-02-27 12:01:16 +00:00
371 lines
20 KiB
C
371 lines
20 KiB
C
module std::io::path @test;
|
|
|
|
fn void! test_dot()
|
|
{
|
|
Path p = path::new(".")!;
|
|
assert(@catch(p.parent()));
|
|
// It must be possible to form the absolute version.
|
|
Path p2 = p.new_absolute()!;
|
|
p2 = p.new_append("/hello/world")!;
|
|
if (p2.env == POSIX)
|
|
{
|
|
assert(p2.str_view() == "hello/world");
|
|
}
|
|
else
|
|
{
|
|
assert(p2.str_view() == `hello\world`);
|
|
}
|
|
}
|
|
|
|
fn void! test_parent()
|
|
{
|
|
Path p = path::new("")!;
|
|
assert(@catch(p.parent()));
|
|
p = path::new("/", path_env: PathEnv.POSIX)!;
|
|
assert(@catch(p.parent()));
|
|
p = path::new("/a/b/c", path_env: PathEnv.POSIX)!;
|
|
assert(p.parent().str_view()! == "/a/b");
|
|
p = path::new("/a/b/c", path_env: PathEnv.WIN32)!;
|
|
assert(p.parent().str_view()! == `\a\b`);
|
|
}
|
|
|
|
fn void! test_path_normalized()
|
|
{
|
|
assert(path::new("", path_env: PathEnv.WIN32).str_view()! == "");
|
|
assert(@catch(path::new("1:\\a\\b\\c.txt", path_env: PathEnv.WIN32)));
|
|
assert(@catch(path::new(":", path_env: PathEnv.WIN32)));
|
|
assert(@catch(path::new("1:", path_env: PathEnv.WIN32)));
|
|
assert(@catch(path::new("1:a", path_env: PathEnv.WIN32)));
|
|
// assert(@catch(path::new(`\\\a\b\c.txt`, path_env: PathEnv.WIN32)));
|
|
assert(@catch(path::new(`\\server\a\b\..\..\..\c`, path_env: PathEnv.WIN32)));
|
|
|
|
assert(@catch(path::new(`\\a`, path_env: PathEnv.WIN32)));
|
|
assert(@catch(path::new(`/a/b/../../../c`, path_env: PathEnv.WIN32)));
|
|
assert(@catch(path::new(`/a/b/../../../c`, path_env: PathEnv.POSIX)));
|
|
assert(@catch(path::new(`/a/b/../../..`, path_env: PathEnv.WIN32)));
|
|
assert(@catch(path::new(`/a/b/../../..`, path_env: PathEnv.POSIX)));
|
|
assert(@catch(path::new(`/../a`, path_env: PathEnv.WIN32)));
|
|
assert(@catch(path::new(`/../a`, path_env: PathEnv.POSIX)));
|
|
assert(@catch(path::new(`/..`, path_env: PathEnv.WIN32)));
|
|
assert(@catch(path::new(`/..`, path_env: PathEnv.POSIX)));
|
|
assert(@catch(path::new(`C:/a/b/../../../c`, path_env: PathEnv.WIN32)));
|
|
assert(@catch(path::new(`C:/../a`, path_env: PathEnv.WIN32)));
|
|
assert(@catch(path::new(`C:/..`, path_env: PathEnv.WIN32)));
|
|
|
|
assert(path::new("/", path_env: PathEnv.POSIX).str_view()! == "/");
|
|
assert(path::new("/./", path_env: PathEnv.POSIX).str_view()! == "/");
|
|
assert(path::new("/foo/../", path_env: PathEnv.POSIX).str_view()! == "/");
|
|
assert(path::new("/foo/bar/../", path_env: PathEnv.POSIX).str_view()! == "/foo");
|
|
assert(path::new("/foo//bar", path_env: PathEnv.POSIX).str_view()! == "/foo/bar");
|
|
assert(path::new("/foo//bar/../", path_env: PathEnv.POSIX).str_view()! == "/foo");
|
|
assert(path::new("/foo/.bar", path_env: PathEnv.POSIX).str_view()! == "/foo/.bar");
|
|
assert(path::new(`\foo\.bar`, path_env: PathEnv.WIN32).str_view()! == `\foo\.bar`);
|
|
assert(path::new("a\\b/c.txt", path_env: PathEnv.WIN32).str_view()! == `a\b\c.txt`);
|
|
assert(path::new("a\\b/c.txt", path_env: PathEnv.POSIX).str_view()! == "a\\b/c.txt");
|
|
assert(path::new("C:\\a\\b/c.txt", path_env: PathEnv.WIN32).str_view()! == `C:\a\b\c.txt`);
|
|
assert(path::new("C:\\a\\b/c.txt", path_env: PathEnv.POSIX).str_view()! == "C:\\a\\b/c.txt");
|
|
assert(path::new(`\\server\a\b/c.txt`, path_env: PathEnv.WIN32).str_view()! == `\\server\a\b\c.txt`);
|
|
assert(path::new(`\\server\a\b/c.txt`, path_env: PathEnv.POSIX).str_view()! == `\\server\a\b/c.txt`);
|
|
assert(path::new(`c:\hello//bar\\\\foo.txt`, path_env: PathEnv.WIN32).str_view()! == `c:\hello\bar\foo.txt`);
|
|
|
|
assert(path::new(`~\a\b/c.txt`, path_env: PathEnv.WIN32).str_view()! == `~\a\b\c.txt`);
|
|
assert(path::new(`~\a\b/c.txt`, path_env: PathEnv.POSIX).str_view()! == `~\a\b/c.txt`);
|
|
|
|
|
|
assert(path::new(`a/b/../../../c`, path_env: PathEnv.WIN32).str_view()! == `..\c`);
|
|
assert(path::new(`a/b/../../../c`, path_env: PathEnv.POSIX).str_view()! == `../c`);
|
|
assert(path::new(`a/b/../../..`, path_env: PathEnv.WIN32).str_view()! == `..`);
|
|
assert(path::new(`a/b/../../..`, path_env: PathEnv.POSIX).str_view()! == `..`);
|
|
assert(path::new(`../a`, path_env: PathEnv.WIN32).str_view()! == `..\a`);
|
|
assert(path::new(`../a`, path_env: PathEnv.POSIX).str_view()! == `../a`);
|
|
assert(path::new(`..`, path_env: PathEnv.WIN32).str_view()! == `..`);
|
|
assert(path::new(`..`, path_env: PathEnv.POSIX).str_view()! == `..`);
|
|
assert(path::new(`a/b/../c`, path_env: PathEnv.WIN32).str_view()! == `a\c`);
|
|
assert(path::new(`a/b/../c`, path_env: PathEnv.POSIX).str_view()! == `a/c`);
|
|
assert(path::new(`a/b/../../c`, path_env: PathEnv.WIN32).str_view()! == `c`);
|
|
assert(path::new(`a/b/../../c`, path_env: PathEnv.POSIX).str_view()! == `c`);
|
|
assert(path::new(`a/b/..`, path_env: PathEnv.WIN32).str_view()! == `a`);
|
|
assert(path::new(`a/b/..`, path_env: PathEnv.POSIX).str_view()! == `a`);
|
|
assert(path::new(`a/b/../`, path_env: PathEnv.WIN32).str_view()! == `a`);
|
|
assert(path::new(`a/b/../`, path_env: PathEnv.POSIX).str_view()! == `a`);
|
|
assert(path::new(`a/b/../..`, path_env: PathEnv.WIN32).str_view()! == ".");
|
|
assert(path::new(`a/b/../..`, path_env: PathEnv.POSIX).str_view()! == ".");
|
|
assert(path::new(`a/b/../../`, path_env: PathEnv.WIN32).str_view()! == ".");
|
|
assert(path::new(`a/b/../../`, path_env: PathEnv.POSIX).str_view()! == ".");
|
|
assert(path::new(`a/b/../c/../d`, path_env: PathEnv.WIN32).str_view()! == `a\d`);
|
|
assert(path::new(`a/b/../c/../d`, path_env: PathEnv.POSIX).str_view()! == `a/d`);
|
|
assert(path::new(`a/b/../c/../d/`, path_env: PathEnv.WIN32).str_view()! == `a\d`);
|
|
assert(path::new(`a/b/../c/../d/`, path_env: PathEnv.POSIX).str_view()! == `a/d`);
|
|
assert(path::new(`a/b//d`, path_env: PathEnv.WIN32).str_view()! == `a\b\d`);
|
|
assert(path::new(`a/b//d`, path_env: PathEnv.POSIX).str_view()! == `a/b/d`);
|
|
assert(path::new(`a/b/././.`, path_env: PathEnv.WIN32).str_view()! == `a\b`);
|
|
assert(path::new(`a/b/././.`, path_env: PathEnv.POSIX).str_view()! == `a/b`);
|
|
assert(path::new(`a/b/./././`, path_env: PathEnv.WIN32).str_view()! == `a\b`);
|
|
assert(path::new(`a/b/./././`, path_env: PathEnv.POSIX).str_view()! == `a/b`);
|
|
assert(path::new(`./a/`, path_env: PathEnv.WIN32).str_view()! == `a`);
|
|
assert(path::new(`./a/`, path_env: PathEnv.POSIX).str_view()! == `a`);
|
|
assert(path::new(`./`, path_env: PathEnv.WIN32).str_view()! == `.`);
|
|
assert(path::new(`./`, path_env: PathEnv.POSIX).str_view()! == `.`);
|
|
assert(path::new(`.`, path_env: PathEnv.WIN32).str_view()! == `.`);
|
|
assert(path::new(`.`, path_env: PathEnv.POSIX).str_view()! == `.`);
|
|
assert(path::new(``, path_env: PathEnv.WIN32).str_view()! == ``);
|
|
assert(path::new(``, path_env: PathEnv.POSIX).str_view()! == ``);
|
|
assert(path::new(`/a`, path_env: PathEnv.WIN32).str_view()! == `\a`);
|
|
assert(path::new(`/a`, path_env: PathEnv.POSIX).str_view()! == `/a`);
|
|
assert(path::new(`/a/`, path_env: PathEnv.WIN32).str_view()! == `\a`);
|
|
assert(path::new(`/a/`, path_env: PathEnv.POSIX).str_view()! == `/a`);
|
|
assert(path::new(`/a/b/../c`, path_env: PathEnv.WIN32).str_view()! == `\a\c`);
|
|
assert(path::new(`/a/b/../c`, path_env: PathEnv.POSIX).str_view()! == `/a/c`);
|
|
assert(path::new(`/a/b/../../c`, path_env: PathEnv.WIN32).str_view()! == `\c`);
|
|
assert(path::new(`/a/b/../../c`, path_env: PathEnv.POSIX).str_view()! == `/c`);
|
|
assert(path::new(`/a/b/..`, path_env: PathEnv.WIN32).str_view()! == `\a`);
|
|
assert(path::new(`/a/b/..`, path_env: PathEnv.POSIX).str_view()! == `/a`);
|
|
assert(path::new(`/a/b/../..`, path_env: PathEnv.WIN32).str_view()! == `\`);
|
|
assert(path::new(`/a/b/../..`, path_env: PathEnv.POSIX).str_view()! == `/`);
|
|
assert(path::new(`/a/b/../c/../d`, path_env: PathEnv.WIN32).str_view()! == `\a\d`);
|
|
assert(path::new(`/a/b/../c/../d`, path_env: PathEnv.POSIX).str_view()! == `/a/d`);
|
|
assert(path::new(`/a/b//d`, path_env: PathEnv.WIN32).str_view()! == `\a\b\d`);
|
|
assert(path::new(`/a/b//d`, path_env: PathEnv.POSIX).str_view()! == `/a/b/d`);
|
|
assert(path::new(`/./a/`, path_env: PathEnv.WIN32).str_view()! == `\a`);
|
|
assert(path::new(`/./a/`, path_env: PathEnv.POSIX).str_view()! == `/a`);
|
|
assert(path::new(`/./`, path_env: PathEnv.WIN32).str_view()! == `\`);
|
|
assert(path::new(`/./`, path_env: PathEnv.POSIX).str_view()! == `/`);
|
|
assert(path::new(`/.`, path_env: PathEnv.WIN32).str_view()! == `\`);
|
|
assert(path::new(`/.`, path_env: PathEnv.POSIX).str_view()! == `/`);
|
|
assert(path::new(`/`, path_env: PathEnv.WIN32).str_view()! == `\`);
|
|
assert(path::new(`/`, path_env: PathEnv.POSIX).str_view()! == `/`);
|
|
assert(path::new(`C:/a`, path_env: PathEnv.WIN32).str_view()! == `C:\a`);
|
|
assert(path::new(`C:/a`, path_env: PathEnv.POSIX).str_view()! == `C:/a`);
|
|
assert(path::new(`C:/a/b/../c`, path_env: PathEnv.WIN32).str_view()! == `C:\a\c`);
|
|
assert(path::new(`C:/a/b/../c`, path_env: PathEnv.POSIX).str_view()! == `C:/a/c`);
|
|
assert(path::new(`C:/a/b/../../c`, path_env: PathEnv.WIN32).str_view()! == `C:\c`);
|
|
assert(path::new(`C:/a/b/../../c`, path_env: PathEnv.POSIX).str_view()! == `C:/c`);
|
|
assert(path::new(`C:/a/b/../../../c`, path_env: PathEnv.POSIX).str_view()! == `c`);
|
|
assert(path::new(`C:/a/b/..`, path_env: PathEnv.WIN32).str_view()! == `C:\a`);
|
|
assert(path::new(`C:/a/b/..`, path_env: PathEnv.POSIX).str_view()! == `C:/a`);
|
|
assert(path::new(`C:/a/b/../..`, path_env: PathEnv.WIN32).str_view()! == `C:\`);
|
|
assert(path::new(`C:/a/b/../..`, path_env: PathEnv.POSIX).str_view()! == `C:`);
|
|
assert(path::new(`C:/a/b/../c/../d`, path_env: PathEnv.WIN32).str_view()! == `C:\a\d`);
|
|
assert(path::new(`C:/a/b/../c/../d`, path_env: PathEnv.POSIX).str_view()! == `C:/a/d`);
|
|
assert(path::new(`C:/a/b//d`, path_env: PathEnv.WIN32).str_view()! == `C:\a\b\d`);
|
|
assert(path::new(`C:/a/b//d`, path_env: PathEnv.POSIX).str_view()! == `C:/a/b/d`);
|
|
assert(path::new(`C:/a/b/././.`, path_env: PathEnv.WIN32).str_view()! == `C:\a\b`);
|
|
assert(path::new(`C:/a/b/././.`, path_env: PathEnv.POSIX).str_view()! == `C:/a/b`);
|
|
assert(path::new(`C:/./a`, path_env: PathEnv.WIN32).str_view()! == `C:\a`);
|
|
assert(path::new(`C:/./a`, path_env: PathEnv.POSIX).str_view()! == `C:/a`);
|
|
assert(path::new(`C:/./`, path_env: PathEnv.WIN32).str_view()! == `C:\`);
|
|
assert(path::new(`C:/./`, path_env: PathEnv.POSIX).str_view()! == `C:`);
|
|
assert(path::new(`C:/../a`, path_env: PathEnv.POSIX).str_view()! == `a`);
|
|
assert(path::new(`C:/..`, path_env: PathEnv.POSIX).str_view()! == `.`);
|
|
assert(path::new(`C:/`, path_env: PathEnv.WIN32).str_view()! == `C:\`);
|
|
assert(path::new(`C:/`, path_env: PathEnv.POSIX).str_view()! == `C:`);
|
|
assert(path::new(`C:a`, path_env: PathEnv.WIN32).str_view()! == `C:a`);
|
|
assert(path::new(`C:a`, path_env: PathEnv.POSIX).str_view()! == `C:a`);
|
|
assert(path::new(`C:a/`, path_env: PathEnv.WIN32).str_view()! == `C:a`);
|
|
assert(path::new(`C:a/`, path_env: PathEnv.POSIX).str_view()! == `C:a`);
|
|
|
|
assert(path::new(`C:a/b/../c`, path_env: PathEnv.WIN32).str_view()! == `C:a\c`);
|
|
assert(path::new(`C:a/b/../c`, path_env: PathEnv.POSIX).str_view()! == `C:a/c`);
|
|
assert(path::new(`C:a/b/../../c`, path_env: PathEnv.WIN32).str_view()! == `C:c`);
|
|
assert(path::new(`C:a/b/../../c`, path_env: PathEnv.POSIX).str_view()! == `c`);
|
|
assert(path::new(`C:a/b/..`, path_env: PathEnv.WIN32).str_view()! == `C:a`);
|
|
assert(path::new(`C:a/b/..`, path_env: PathEnv.POSIX).str_view()! == `C:a`);
|
|
assert(path::new(`C:a/b/../..`, path_env: PathEnv.WIN32).str_view()! == `C:`);
|
|
assert(path::new(`C:a/b/../..`, path_env: PathEnv.POSIX).str_view()! == `.`);
|
|
assert(path::new(`C:a/b/../c/../d`, path_env: PathEnv.WIN32).str_view()! == `C:a\d`);
|
|
assert(path::new(`C:a/b/../c/../d`, path_env: PathEnv.POSIX).str_view()! == `C:a/d`);
|
|
assert(path::new(`C:a/b//d`, path_env: PathEnv.WIN32).str_view()! == `C:a\b\d`);
|
|
assert(path::new(`C:a/b//d`, path_env: PathEnv.POSIX).str_view()! == `C:a/b/d`);
|
|
assert(path::new(`C:a/b/././.`, path_env: PathEnv.WIN32).str_view()! == `C:a\b`);
|
|
assert(path::new(`C:a/b/././.`, path_env: PathEnv.POSIX).str_view()! == `C:a/b`);
|
|
assert(path::new(`C:a/b/../../../c`, path_env: PathEnv.WIN32).str_view()! == `C:..\c`);
|
|
assert(path::new(`C:./a`, path_env: PathEnv.WIN32).str_view()! == `C:a`);
|
|
assert(path::new(`C:./a`, path_env: PathEnv.POSIX).str_view()! == `C:./a`);
|
|
assert(path::new(`C:./`, path_env: PathEnv.WIN32).str_view()! == `C:`);
|
|
assert(path::new(`C:./`, path_env: PathEnv.POSIX).str_view()! == `C:.`);
|
|
assert(path::new(`C:../a`, path_env: PathEnv.POSIX).str_view()! == `C:../a`);
|
|
assert(path::new(`C:../a`, path_env: PathEnv.WIN32).str_view()! == `C:..\a`);
|
|
assert(path::new(`C:..`, path_env: PathEnv.POSIX).str_view()! == `C:..`);
|
|
assert(path::new(`C:..`, path_env: PathEnv.WIN32).str_view()! == `C:..`);
|
|
assert(path::new(`C:`, path_env: PathEnv.WIN32).str_view()! == `C:`);
|
|
assert(path::new(`C:`, path_env: PathEnv.POSIX).str_view()! == `C:`);
|
|
|
|
assert(path::new(`\\server\foo/a`, path_env: PathEnv.WIN32).str_view()! == `\\server\foo\a`);
|
|
assert(path::new(`\\server\foo/a`, path_env: PathEnv.POSIX).str_view()! == `\\server\foo/a`);
|
|
assert(path::new(`\\server\foo\a\b\..\c`, path_env: PathEnv.WIN32).str_view()! == `\\server\foo\a\c`);
|
|
assert(path::new(`\\server\foo\a\b\..\..\c`, path_env: PathEnv.WIN32).str_view()! == `\\server\foo\c`);
|
|
assert(path::new(`\\server\foo\a\b\..`, path_env: PathEnv.WIN32).str_view()! == `\\server\foo\a`);
|
|
assert(path::new(`\\server\foo\a\..`, path_env: PathEnv.WIN32).str_view()! == `\\server\foo\`);
|
|
assert(path::new(`\\server\foo\a\b\..\c\..\d`, path_env: PathEnv.WIN32).str_view()! == `\\server\foo\a\d`);
|
|
assert(path::new(`\\server\foo\a\b\\d`, path_env: PathEnv.WIN32).str_view()! == `\\server\foo\a\b\d`);
|
|
assert(path::new(`\\server\foo\a\b\.\.\.`, path_env: PathEnv.WIN32).str_view()! == `\\server\foo\a\b`);
|
|
assert(path::new(`\\server\foo\.\a`, path_env: PathEnv.WIN32).str_view()! == `\\server\foo\a`);
|
|
assert(path::new(`\\server\foo\.`, path_env: PathEnv.WIN32).str_view()! == `\\server\foo\`);
|
|
assert(path::new(`\\server\foo\`, path_env: PathEnv.WIN32).str_view()! == `\\server\foo\`);
|
|
|
|
}
|
|
|
|
fn void! test_extension()
|
|
{
|
|
assert(@catch(path::new(`C:`, path_env: PathEnv.WIN32).extension()));
|
|
assert(@catch(path::new(`C:`, path_env: PathEnv.POSIX).extension()));
|
|
assert(@catch(path::new(`file`, path_env: PathEnv.WIN32).extension()));
|
|
assert(@catch(path::new(`file`, path_env: PathEnv.POSIX).extension()));
|
|
assert(@catch(path::new(`C:\temp\foo.bar\README`, path_env: PathEnv.WIN32).extension()));
|
|
|
|
assert(path::new_windows("file.txt").extension()! == "txt");
|
|
assert(path::new_posix("file.txt").extension()! == "txt");
|
|
|
|
assert(path::new_windows("a/b/file.txt").extension()! == "txt");
|
|
assert(path::new_posix("a/b/file.txt").extension()! == "txt");
|
|
|
|
assert(path::new_windows("a\\b\\file.txt").extension()! == "txt");
|
|
|
|
assert(path::new_windows("a.b/file.txt").extension()! == "txt");
|
|
assert(path::new_posix("a.b/file.txt").extension()! == "txt");
|
|
assert(path::new_windows("a.b/file.txt").extension()! == "txt");
|
|
assert(path::new_posix("a.b/file.txt").extension()! == "txt");
|
|
|
|
assert(path::new_windows("a.b\\file.txt").extension()! == "txt");
|
|
|
|
assert(path::new_windows("domain.dot.com").extension()! == "com");
|
|
assert(path::new_posix("domain.dot.com").extension()! == "com");
|
|
|
|
assert(path::new_windows("image.jpeg").extension()! == "jpeg");
|
|
assert(path::new_posix("image.jpeg").extension()! == "jpeg");
|
|
|
|
assert(path::new_windows("../filename.ext").extension()! == "ext");
|
|
assert(path::new_posix("../filename.ext").extension()! == "ext");
|
|
|
|
}
|
|
|
|
fn void! test_has_extension()
|
|
{
|
|
assert(!path::new(`C:\temp\foo.bar\README`, path_env: PathEnv.WIN32)!.has_extension(`bar\README`));
|
|
|
|
assert(path::new_windows("file.txt")!.has_extension("txt"));
|
|
assert(path::new_posix("file.txt")!.has_extension("txt"));
|
|
|
|
assert(path::new_windows("a/b/file.txt")!.has_extension("txt"));
|
|
assert(path::new_posix("a/b/file.txt")!.has_extension("txt"));
|
|
|
|
assert(path::new_windows("a\\b\\file.txt")!.has_extension("txt"));
|
|
|
|
assert(path::new_windows("a.b/file.txt")!.has_extension("txt"));
|
|
assert(path::new_posix("a.b/file.txt")!.has_extension("txt"));
|
|
assert(path::new_windows("a.b/file.txt")!.has_extension("txt"));
|
|
assert(path::new_posix("a.b/file.txt")!.has_extension("txt"));
|
|
|
|
assert(path::new_windows("a.b\\file.txt")!.has_extension("txt"));
|
|
|
|
assert(path::new_windows("domain.dot.com")!.has_extension("com"));
|
|
assert(path::new_posix("domain.dot.com")!.has_extension("com"));
|
|
|
|
assert(path::new_windows("image.jpeg")!.has_extension("jpeg"));
|
|
assert(path::new_posix("image.jpeg")!.has_extension("jpeg"));
|
|
|
|
assert(path::new_windows("../filename.ext")!.has_extension("ext"));
|
|
assert(path::new_posix("../filename.ext")!.has_extension("ext"));
|
|
|
|
}
|
|
|
|
fn void! test_basename()
|
|
{
|
|
assert(path::new_windows("file.txt").basename()! == "file.txt");
|
|
assert(path::new_posix("file.txt").basename()! == "file.txt");
|
|
|
|
assert(path::new_windows("a/b/file.txt").basename()! == "file.txt");
|
|
assert(path::new_posix("a/b/file.txt").basename()! == "file.txt");
|
|
|
|
assert(path::new_windows("a.b/file.txt").basename()! == "file.txt");
|
|
assert(path::new_posix("a.b/file.txt").basename()! == "file.txt");
|
|
|
|
assert(path::new_windows("a.b/file.txt").basename()! == "file.txt");
|
|
assert(path::new_posix("a.b/file.txt").basename()! == "file.txt");
|
|
|
|
assert(path::new_windows("../filename.ext").basename()! == "filename.ext");
|
|
assert(path::new_posix("../filename.ext").basename()! == "filename.ext");
|
|
|
|
assert(path::new_windows("C:").basename()! == "");
|
|
assert(path::new_posix("C:").basename()! == "C:");
|
|
|
|
assert(path::new_windows("../..").basename()! == "..");
|
|
assert(path::new_posix("../..").basename()! == "..");
|
|
|
|
assert(path::new_windows(`\\server\abc`).basename()! == "");
|
|
assert(path::new_posix(`\\server\abc`).basename()! == `\\server\abc`);
|
|
}
|
|
|
|
fn void! test_dirname()
|
|
{
|
|
assert(path::new_posix("").dirname()! == ".");
|
|
assert(path::new_posix("/file").dirname()! == "/");
|
|
assert(path::new_posix("///").dirname()! == "/");
|
|
assert(path::new_windows("d:").dirname()! == "d:");
|
|
assert(path::new_windows("d:file").dirname()! == "d:");
|
|
assert(path::new_windows(`d:\file`).dirname()! == `d:\`);
|
|
|
|
assert(path::new_windows("file.txt").dirname()! == ".");
|
|
assert(path::new_posix("file.txt").dirname()! == ".");
|
|
|
|
assert(path::new_windows("a/b/file.txt").dirname()! == `a\b`);
|
|
assert(path::new_posix("a/b/file.txt").dirname()! == "a/b");
|
|
|
|
assert(path::new_windows("a.b/file.txt").dirname()! == "a.b");
|
|
assert(path::new_posix("a.b/file.txt").dirname()! == "a.b");
|
|
|
|
assert(path::new_windows("../filename.ext").dirname()! == "..");
|
|
assert(path::new_posix("../filename.ext").dirname()! == "..");
|
|
|
|
assert(path::new_windows("C:").dirname()! == "C:");
|
|
assert(path::new_posix("C:").dirname()! == ".");
|
|
|
|
assert(path::new_windows("C:/").dirname()! == "C:\\");
|
|
assert(path::new_posix("C:/").dirname()! == ".");
|
|
|
|
assert(path::new_windows("C:/a").dirname()! == "C:\\");
|
|
assert(path::new_posix("C:/a").dirname()! == "C:");
|
|
|
|
assert(path::new_windows("../..").dirname()! == "..");
|
|
assert(path::new_posix("../..").dirname()! == "..");
|
|
|
|
assert(path::new_windows(`\\server\share\dir\file`).dirname()! == `\\server\share\dir`);
|
|
assert(path::new_windows(`\\server\share\file`).dirname()! == `\\server\share`);
|
|
assert(path::new_windows(`\\server\share\`).dirname()! == `\\server\share`);
|
|
assert(path::new_windows(`\\server\share`).dirname()! == `\\server\share`);
|
|
assert(path::new_posix(`\\server\`).dirname()! == `.`);
|
|
}
|
|
|
|
fn void! test_path_volume()
|
|
{
|
|
assert(path::new_windows(`C:\abs`).volume_name()! == `C:`);
|
|
assert(path::new_windows(`C:abs`).volume_name()! == `C:`);
|
|
assert(path::new_posix(`C:/abs`).volume_name()! == ``);
|
|
assert(path::new_posix(`C:abs`).volume_name()! == ``);
|
|
assert(path::new_windows(`\\server\foo`).volume_name()! == `\\server\foo`);
|
|
assert(path::new_windows(`\\server\foo\abc`).volume_name()! == `\\server\foo`);
|
|
}
|
|
|
|
fn void! test_path_is_absolute()
|
|
{
|
|
assert(!path::new_posix("").is_absolute()!);
|
|
assert(path::new_posix("/").is_absolute()!);
|
|
assert(path::new_posix("/a/b").is_absolute()!);
|
|
assert(!path::new_posix("a/b").is_absolute()!);
|
|
|
|
assert(!path::new_windows(`C:`).is_absolute()!);
|
|
assert(path::new_windows(`C:\abs`).is_absolute()!);
|
|
assert(!path::new_windows(`C:abs`).is_absolute()!);
|
|
assert(path::new_windows(`\\server\foo`).is_absolute()!);
|
|
assert(path::new_windows(`\\server\foo\abc`).is_absolute()!);
|
|
}
|
|
|
|
fn void! test_path_absolute()
|
|
{
|
|
$if env::WIN32:
|
|
assert(path::new_windows(`C:\abs`).new_absolute()!.str_view() == `C:\abs`);
|
|
$else
|
|
assert(path::new_posix("/").new_absolute()!.str_view() == "/");
|
|
assert(path::new_posix(".").new_absolute()!.str_view() == path::temp_cwd()!!.str_view());
|
|
$endif
|
|
} |