Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Next Next commit
Add tests
Signed-off-by: Christoph Wurst <[email protected]>
  • Loading branch information
ChristophWurst committed Oct 3, 2019
commit 33671c1a4995b6bb274a9569f8deffd781669701
45 changes: 45 additions & 0 deletions test/basename.test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
import {basename} from '../lib/index'

describe('basename', function() {
it('Returns the nothing if no file name given', function() {
expect(basename('')).toEqual('');
});
it('Returns the nothing if dir is root', function() {
expect(basename('/')).toEqual('');
});
it('Returns the same name if no path given', function() {
expect(basename('some name.txt')).toEqual('some name.txt');
});
it('Returns the base name if root path given', function() {
expect(basename('/some name.txt')).toEqual('some name.txt');
});
it('Returns the base name if double root path given', function() {
expect(basename('//some name.txt')).toEqual('some name.txt');
});
it('Returns the base name if subdir given without root', function() {
expect(basename('subdir/some name.txt')).toEqual('some name.txt');
});
it('Returns the base name if subdir given with root', function() {
expect(basename('/subdir/some name.txt')).toEqual('some name.txt');
});
it('Returns the base name if subdir given with double root', function() {
expect(basename('//subdir/some name.txt')).toEqual('some name.txt');
});
it('Returns the base name if subdir has dot', function() {
expect(basename('/subdir.dat/some name.txt')).toEqual('some name.txt');
});
it('Returns dot if file name is dot', function() {
expect(basename('/subdir/.')).toEqual('.');
});
// TODO: fix the source to make it work like PHP's basename
it('Returns the dir itself if no file name given', function() {
// TODO: fix the source to make it work like PHP's dirname
// expect(basename('subdir/')).toEqual('subdir');
expect(basename('subdir/')).toEqual('');
});
it('Returns the dir itself if no file name given with root', function() {
// TODO: fix the source to make it work like PHP's dirname
// expect(basename('/subdir/')).toEqual('subdir');
expect(basename('/subdir/')).toEqual('');
});
});
56 changes: 56 additions & 0 deletions test/dirname.test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
import {dirname} from '../lib/index'

describe('dirname', function() {
it('Returns the nothing if no file name given', function() {
expect(dirname('')).toEqual('');
});
it('Returns the root if dir is root', function() {
// TODO: fix the source to make it work like PHP's dirname
// expect(dirname('/')).toEqual('/');
expect(dirname('/')).toEqual('');
});
it('Returns the root if dir is double root', function() {
// TODO: fix the source to make it work like PHP's dirname
// expect(dirname('//')).toEqual('/');
expect(dirname('//')).toEqual('/'); // oh no...
});
it('Returns dot if dir is dot', function() {
expect(dirname('.')).toEqual('.');
});
it('Returns dot if no root given', function() {
// TODO: fix the source to make it work like PHP's dirname
// expect(dirname('some dir')).toEqual('.');
expect(dirname('some dir')).toEqual('some dir'); // oh no...
});
it('Returns the dir name if file name and root path given', function() {
// TODO: fix the source to make it work like PHP's dirname
// expect(dirname('/some name.txt')).toEqual('/');
expect(dirname('/some name.txt')).toEqual('');
});
it('Returns the dir name if double root path given', function() {
expect(dirname('//some name.txt')).toEqual('/'); // how lucky...
});
it('Returns the dir name if subdir given without root', function() {
expect(dirname('subdir/some name.txt')).toEqual('subdir');
});
it('Returns the dir name if subdir given with root', function() {
expect(dirname('/subdir/some name.txt')).toEqual('/subdir');
});
it('Returns the dir name if subdir given with double root', function() {
// TODO: fix the source to make it work like PHP's dirname
// expect(dirname('//subdir/some name.txt')).toEqual('/subdir');
expect(dirname('//subdir/some name.txt')).toEqual('//subdir'); // oh...
});
it('Returns the dir name if subdir has dot', function() {
expect(dirname('/subdir.dat/some name.txt')).toEqual('/subdir.dat');
});
it('Returns the dir name if file name is dot', function() {
expect(dirname('/subdir/.')).toEqual('/subdir');
});
it('Returns the dir name if no file name given', function() {
expect(dirname('subdir/')).toEqual('subdir');
});
it('Returns the dir name if no file name given with root', function() {
expect(dirname('/subdir/')).toEqual('/subdir');
});
});
67 changes: 67 additions & 0 deletions test/isSamePath.test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
import {isSamePath} from '../lib/index'

describe('isSamePath', function() {
it('recognizes empty paths are equal', function() {
expect(isSamePath('', '')).toEqual(true);
expect(isSamePath('/', '')).toEqual(true);
expect(isSamePath('//', '')).toEqual(true);
expect(isSamePath('/', '/')).toEqual(true);
expect(isSamePath('/', '//')).toEqual(true);
});
it('recognizes path with single sections as equal regardless of extra slashes', function() {
expect(isSamePath('abc', 'abc')).toEqual(true);
expect(isSamePath('/abc', 'abc')).toEqual(true);
expect(isSamePath('//abc', 'abc')).toEqual(true);
expect(isSamePath('abc', '/abc')).toEqual(true);
expect(isSamePath('abc/', 'abc')).toEqual(true);
expect(isSamePath('abc/', 'abc/')).toEqual(true);
expect(isSamePath('/abc/', 'abc/')).toEqual(true);
expect(isSamePath('/abc/', '/abc/')).toEqual(true);
expect(isSamePath('//abc/', '/abc/')).toEqual(true);
expect(isSamePath('//abc//', '/abc/')).toEqual(true);

expect(isSamePath('abc', 'def')).toEqual(false);
expect(isSamePath('/abc', 'def')).toEqual(false);
expect(isSamePath('//abc', 'def')).toEqual(false);
expect(isSamePath('abc', '/def')).toEqual(false);
expect(isSamePath('abc/', 'def')).toEqual(false);
expect(isSamePath('abc/', 'def/')).toEqual(false);
expect(isSamePath('/abc/', 'def/')).toEqual(false);
expect(isSamePath('/abc/', '/def/')).toEqual(false);
expect(isSamePath('//abc/', '/def/')).toEqual(false);
expect(isSamePath('//abc//', '/def/')).toEqual(false);
});
it('recognizes path with multiple sections as equal regardless of extra slashes', function() {
expect(isSamePath('abc/def', 'abc/def')).toEqual(true);
expect(isSamePath('/abc/def', 'abc/def')).toEqual(true);
expect(isSamePath('abc/def', '/abc/def')).toEqual(true);
expect(isSamePath('abc/def/', '/abc/def/')).toEqual(true);
expect(isSamePath('/abc/def/', '/abc/def/')).toEqual(true);
expect(isSamePath('/abc/def/', 'abc/def/')).toEqual(true);
expect(isSamePath('//abc/def/', 'abc/def/')).toEqual(true);
expect(isSamePath('//abc/def//', 'abc/def/')).toEqual(true);

expect(isSamePath('abc/def', 'abc/ghi')).toEqual(false);
expect(isSamePath('/abc/def', 'abc/ghi')).toEqual(false);
expect(isSamePath('abc/def', '/abc/ghi')).toEqual(false);
expect(isSamePath('abc/def/', '/abc/ghi/')).toEqual(false);
expect(isSamePath('/abc/def/', '/abc/ghi/')).toEqual(false);
expect(isSamePath('/abc/def/', 'abc/ghi/')).toEqual(false);
expect(isSamePath('//abc/def/', 'abc/ghi/')).toEqual(false);
expect(isSamePath('//abc/def//', 'abc/ghi/')).toEqual(false);
});
it('recognizes path entries with dot', function() {
expect(isSamePath('.', '')).toEqual(true);
expect(isSamePath('.', '.')).toEqual(true);
expect(isSamePath('.', '/')).toEqual(true);
expect(isSamePath('/.', '/')).toEqual(true);
expect(isSamePath('/./', '/')).toEqual(true);
expect(isSamePath('/./', '/.')).toEqual(true);
expect(isSamePath('/./', '/./')).toEqual(true);
expect(isSamePath('/./', '/./')).toEqual(true);

expect(isSamePath('a/./b', 'a/b')).toEqual(true);
expect(isSamePath('a/b/.', 'a/b')).toEqual(true);
expect(isSamePath('./a/b', 'a/b')).toEqual(true);
});
});
47 changes: 47 additions & 0 deletions test/joinPaths.test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
import {joinPaths} from '../lib/index'

describe('joinPaths', function() {
it('returns empty string with no or empty arguments', function() {
expect(joinPaths()).toEqual('');
expect(joinPaths('')).toEqual('');
expect(joinPaths('', '')).toEqual('');
});
it('returns joined path sections', function() {
expect(joinPaths('abc')).toEqual('abc');
expect(joinPaths('abc', 'def')).toEqual('abc/def');
expect(joinPaths('abc', 'def', 'ghi')).toEqual('abc/def/ghi');
});
it('keeps leading slashes', function() {
expect(joinPaths('/abc')).toEqual('/abc');
expect(joinPaths('/abc', '')).toEqual('/abc');
expect(joinPaths('', '/abc')).toEqual('/abc');
expect(joinPaths('/abc', 'def')).toEqual('/abc/def');
expect(joinPaths('/abc', 'def', 'ghi')).toEqual('/abc/def/ghi');
});
it('keeps trailing slashes', function() {
expect(joinPaths('', 'abc/')).toEqual('abc/');
expect(joinPaths('abc/')).toEqual('abc/');
expect(joinPaths('abc/', '')).toEqual('abc/');
expect(joinPaths('abc', 'def/')).toEqual('abc/def/');
expect(joinPaths('abc', 'def', 'ghi/')).toEqual('abc/def/ghi/');
});
it('splits paths in specified strings and discards extra slashes', function() {
expect(joinPaths('//abc//')).toEqual('/abc/');
expect(joinPaths('//abc//def//')).toEqual('/abc/def/');
expect(joinPaths('//abc//', '//def//')).toEqual('/abc/def/');
expect(joinPaths('//abc//', '//def//', '//ghi//')).toEqual('/abc/def/ghi/');
expect(joinPaths('//abc//def//', '//ghi//jkl/mno/', '//pqr//'))
.toEqual('/abc/def/ghi/jkl/mno/pqr/');
expect(joinPaths('/abc', '/def')).toEqual('/abc/def');
expect(joinPaths('/abc/', '/def')).toEqual('/abc/def');
expect(joinPaths('/abc/', 'def')).toEqual('/abc/def');
});
it('discards empty sections', function() {
expect(joinPaths('abc', '', 'def')).toEqual('abc/def');
});
it('returns root if only slashes', function() {
expect(joinPaths('//')).toEqual('/');
expect(joinPaths('/', '/')).toEqual('/');
expect(joinPaths('/', '//', '/')).toEqual('/');
});
});