From 2d58da520fffaeaee1bceeb33b6e3dc339ea68a3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9C=A8=E6=9D=89?= Date: Wed, 19 Dec 2018 10:29:39 +0800 Subject: migrate deno_path to deno_std (denoland/deno_std#26) Previously https://github.com/zhmushan/deno_path Original: https://github.com/denoland/deno_std/commit/1a35f9daf5aa1c10c61d62cccbe7f9ae3c615a0e --- path/extname_test.ts | 89 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 89 insertions(+) create mode 100644 path/extname_test.ts (limited to 'path/extname_test.ts') diff --git a/path/extname_test.ts b/path/extname_test.ts new file mode 100644 index 000000000..f9a44a812 --- /dev/null +++ b/path/extname_test.ts @@ -0,0 +1,89 @@ +// Copyright the Browserify authors. MIT License. +// Ported from https://github.com/browserify/path-browserify/ + +import { test, assertEqual } from "https://deno.land/x/testing/testing.ts"; +import * as path from "./index"; + +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]; + assertEqual(expected, path.posix.extname(input)); + }); + + // On *nix, backslash is a valid name component like any other character. + assertEqual(path.posix.extname(".\\"), ""); + assertEqual(path.posix.extname("..\\"), ".\\"); + assertEqual(path.posix.extname("file.ext\\"), ".ext\\"); + assertEqual(path.posix.extname("file.ext\\\\"), ".ext\\\\"); + assertEqual(path.posix.extname("file\\"), ""); + assertEqual(path.posix.extname("file\\\\"), ""); + assertEqual(path.posix.extname("file.\\"), ".\\"); + assertEqual(path.posix.extname("file.\\\\"), ".\\\\"); +}); + +test(function extnameWin32() { + pairs.forEach(function(p) { + const input = p[0].replace(slashRE, "\\"); + const expected = p[1]; + assertEqual(expected, path.win32.extname(input)); + assertEqual(expected, path.win32.extname("C:" + input)); + }); + + // On Windows, backslash is a path separator. + assertEqual(path.win32.extname(".\\"), ""); + assertEqual(path.win32.extname("..\\"), ""); + assertEqual(path.win32.extname("file.ext\\"), ".ext"); + assertEqual(path.win32.extname("file.ext\\\\"), ".ext"); + assertEqual(path.win32.extname("file\\"), ""); + assertEqual(path.win32.extname("file\\\\"), ""); + assertEqual(path.win32.extname("file.\\"), "."); + assertEqual(path.win32.extname("file.\\\\"), "."); +}); -- cgit v1.2.3