1
0
Fork 0
mirror of https://github.com/denoland/deno.git synced 2024-11-29 16:30:56 -05:00
denoland-deno/std/path/extname_test.ts
2019-10-16 14:39:33 -04:00

90 lines
2.6 KiB
TypeScript

// Copyright the Browserify authors. MIT License.
// Ported from https://github.com/browserify/path-browserify/
import { test } from "../testing/mod.ts";
import { assertEquals } from "../testing/asserts.ts";
import * as path from "./mod.ts";
const slashRE = /\//g;
const pairs = [
["", ""],
["/path/to/file", ""],
["/path/to/file.ext", ".ext"],
["/path.to/file.ext", ".ext"],
["/path.to/file", ""],
["/path.to/.file", ""],
["/path.to/.file.ext", ".ext"],
["/path/to/f.ext", ".ext"],
["/path/to/..ext", ".ext"],
["/path/to/..", ""],
["file", ""],
["file.ext", ".ext"],
[".file", ""],
[".file.ext", ".ext"],
["/file", ""],
["/file.ext", ".ext"],
["/.file", ""],
["/.file.ext", ".ext"],
[".path/file.ext", ".ext"],
["file.ext.ext", ".ext"],
["file.", "."],
[".", ""],
["./", ""],
[".file.ext", ".ext"],
[".file", ""],
[".file.", "."],
[".file..", "."],
["..", ""],
["../", ""],
["..file.ext", ".ext"],
["..file", ".file"],
["..file.", "."],
["..file..", "."],
["...", "."],
["...ext", ".ext"],
["....", "."],
["file.ext/", ".ext"],
["file.ext//", ".ext"],
["file/", ""],
["file//", ""],
["file./", "."],
["file.//", "."]
];
test(function extname() {
pairs.forEach(function(p) {
const input = p[0];
const expected = p[1];
assertEquals(expected, path.posix.extname(input));
});
// On *nix, backslash is a valid name component like any other character.
assertEquals(path.posix.extname(".\\"), "");
assertEquals(path.posix.extname("..\\"), ".\\");
assertEquals(path.posix.extname("file.ext\\"), ".ext\\");
assertEquals(path.posix.extname("file.ext\\\\"), ".ext\\\\");
assertEquals(path.posix.extname("file\\"), "");
assertEquals(path.posix.extname("file\\\\"), "");
assertEquals(path.posix.extname("file.\\"), ".\\");
assertEquals(path.posix.extname("file.\\\\"), ".\\\\");
});
test(function extnameWin32() {
pairs.forEach(function(p) {
const input = p[0].replace(slashRE, "\\");
const expected = p[1];
assertEquals(expected, path.win32.extname(input));
assertEquals(expected, path.win32.extname("C:" + input));
});
// On Windows, backslash is a path separator.
assertEquals(path.win32.extname(".\\"), "");
assertEquals(path.win32.extname("..\\"), "");
assertEquals(path.win32.extname("file.ext\\"), ".ext");
assertEquals(path.win32.extname("file.ext\\\\"), ".ext");
assertEquals(path.win32.extname("file\\"), "");
assertEquals(path.win32.extname("file\\\\"), "");
assertEquals(path.win32.extname("file.\\"), ".");
assertEquals(path.win32.extname("file.\\\\"), ".");
});