'use strict'; var tape = require('tape'); var path = require('../'); var slashRE = /\//g; var pairs = [ [__filename, '.js'], ['', ''], ['/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.//', '.'] ]; tape('path.posix.extname', function (t) { pairs.forEach(function (p) { var input = p[0]; var expected = p[1]; t.strictEqual(expected, path.posix.extname(input)); }); t.end(); }); tape('path.win32.extname', { skip: true }, function (t) { pairs.forEach(function (p) { var input = p[0].replace(slashRE, '\\'); var expected = p[1]; t.strictEqual(expected, path.win32.extname(input)); t.strictEqual(expected, path.win32.extname("C:" + input)); }); t.end(); }); tape('path.win32.extname backslash', { skip: true }, function (t) { // On Windows, backslash is a path separator. t.strictEqual(path.win32.extname('.\\'), ''); t.strictEqual(path.win32.extname('..\\'), ''); t.strictEqual(path.win32.extname('file.ext\\'), '.ext'); t.strictEqual(path.win32.extname('file.ext\\\\'), '.ext'); t.strictEqual(path.win32.extname('file\\'), ''); t.strictEqual(path.win32.extname('file\\\\'), ''); t.strictEqual(path.win32.extname('file.\\'), '.'); t.strictEqual(path.win32.extname('file.\\\\'), '.'); t.end(); }); tape('path.posix.extname backslash', function (t) { // On *nix, backslash is a valid name component like any other character. t.strictEqual(path.posix.extname('.\\'), ''); t.strictEqual(path.posix.extname('..\\'), '.\\'); t.strictEqual(path.posix.extname('file.ext\\'), '.ext\\'); t.strictEqual(path.posix.extname('file.ext\\\\'), '.ext\\\\'); t.strictEqual(path.posix.extname('file\\'), ''); t.strictEqual(path.posix.extname('file\\\\'), ''); t.strictEqual(path.posix.extname('file.\\'), '.\\'); t.strictEqual(path.posix.extname('file.\\\\'), '.\\\\'); t.end(); });