109 lines
4.7 KiB
JavaScript
109 lines
4.7 KiB
JavaScript
// Copyright 2010 The Closure Library Authors. All Rights Reserved.
|
|
//
|
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
// you may not use this file except in compliance with the License.
|
|
// You may obtain a copy of the License at
|
|
//
|
|
// http://www.apache.org/licenses/LICENSE-2.0
|
|
//
|
|
// Unless required by applicable law or agreed to in writing, software
|
|
// distributed under the License is distributed on an "AS-IS" BASIS,
|
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
// See the License for the specific language governing permissions and
|
|
// limitations under the License.
|
|
|
|
goog.provide('goog.string.pathTest');
|
|
goog.setTestOnly('goog.string.pathTest');
|
|
|
|
goog.require('goog.string.path');
|
|
goog.require('goog.testing.jsunit');
|
|
|
|
// Some test data comes from Python's posixpath tests.
|
|
// See http://svn.python.org/view/python/trunk/Lib/test/test_posixpath.py
|
|
|
|
function testBasename() {
|
|
assertEquals('bar', goog.string.path.baseName('/foo/bar'));
|
|
assertEquals('', goog.string.path.baseName('/'));
|
|
assertEquals('foo', goog.string.path.baseName('foo'));
|
|
assertEquals('foo', goog.string.path.baseName('////foo'));
|
|
assertEquals('bar', goog.string.path.baseName('//foo//bar'));
|
|
}
|
|
|
|
function testDirname() {
|
|
assertEquals('/foo', goog.string.path.dirname('/foo/bar'));
|
|
assertEquals('/', goog.string.path.dirname('/'));
|
|
assertEquals('', goog.string.path.dirname('foo'));
|
|
assertEquals('////', goog.string.path.dirname('////foo'));
|
|
assertEquals('//foo', goog.string.path.dirname('//foo//bar'));
|
|
}
|
|
|
|
function testJoin() {
|
|
assertEquals('/bar/baz',
|
|
goog.string.path.join('/foo', 'bar', '/bar', 'baz'));
|
|
assertEquals('/foo/bar/baz',
|
|
goog.string.path.join('/foo', 'bar', 'baz'));
|
|
assertEquals('/foo/bar/baz',
|
|
goog.string.path.join('/foo/', 'bar', 'baz'));
|
|
assertEquals('/foo/bar/baz/',
|
|
goog.string.path.join('/foo/', 'bar/', 'baz/'));
|
|
}
|
|
|
|
function testNormalizePath() {
|
|
assertEquals('.', goog.string.path.normalizePath(''));
|
|
assertEquals('.', goog.string.path.normalizePath('./'));
|
|
assertEquals('/', goog.string.path.normalizePath('/'));
|
|
assertEquals('//', goog.string.path.normalizePath('//'));
|
|
assertEquals('/', goog.string.path.normalizePath('///'));
|
|
assertEquals('/foo/bar',
|
|
goog.string.path.normalizePath('///foo/.//bar//'));
|
|
assertEquals('/foo/baz',
|
|
goog.string.path.normalizePath('///foo/.//bar//.//..//.//baz'));
|
|
assertEquals('/foo/bar',
|
|
goog.string.path.normalizePath('///..//./foo/.//bar'));
|
|
assertEquals('../../cat/dog',
|
|
goog.string.path.normalizePath('../../cat/dog/'));
|
|
assertEquals('../dog',
|
|
goog.string.path.normalizePath('../cat/../dog/'));
|
|
assertEquals('/cat/dog',
|
|
goog.string.path.normalizePath('/../cat/dog/'));
|
|
assertEquals('/dog',
|
|
goog.string.path.normalizePath('/../cat/../dog'));
|
|
assertEquals('/dog',
|
|
goog.string.path.normalizePath('/../../../dog'));
|
|
}
|
|
|
|
function testSplit() {
|
|
assertArrayEquals(['/foo', 'bar'], goog.string.path.split('/foo/bar'));
|
|
assertArrayEquals(['/', ''], goog.string.path.split('/'));
|
|
assertArrayEquals(['', 'foo'], goog.string.path.split('foo'));
|
|
assertArrayEquals(['////', 'foo'], goog.string.path.split('////foo'));
|
|
assertArrayEquals(['//foo', 'bar'], goog.string.path.split('//foo//bar'));
|
|
}
|
|
|
|
function testExtension() {
|
|
assertEquals('jpg', goog.string.path.extension('././foo/bar/baz.jpg'));
|
|
assertEquals('jpg', goog.string.path.extension('././foo bar/baz.jpg'));
|
|
assertEquals('jpg', goog.string.path.extension(
|
|
'foo/bar/baz/blah blah.jpg'));
|
|
assertEquals('', goog.string.path.extension('../../foo/bar/baz baz'));
|
|
assertEquals('', goog.string.path.extension('../../foo bar/baz baz'));
|
|
assertEquals('', goog.string.path.extension('foo/bar/.'));
|
|
assertEquals('', goog.string.path.extension(' '));
|
|
assertEquals('', goog.string.path.extension(''));
|
|
assertEquals('', goog.string.path.extension('/home/username/.bashrc'));
|
|
|
|
// Tests cases taken from python os.path.splitext().
|
|
assertEquals('bar', goog.string.path.extension('foo.bar'));
|
|
assertEquals('bar', goog.string.path.extension('foo.boo.bar'));
|
|
assertEquals('bar', goog.string.path.extension('foo.boo.biff.bar'));
|
|
assertEquals('rc', goog.string.path.extension('.csh.rc'));
|
|
assertEquals('', goog.string.path.extension('nodots'));
|
|
assertEquals('', goog.string.path.extension('.cshrc'));
|
|
assertEquals('', goog.string.path.extension('...manydots'));
|
|
assertEquals('ext', goog.string.path.extension('...manydots.ext'));
|
|
assertEquals('', goog.string.path.extension('.'));
|
|
assertEquals('', goog.string.path.extension('..'));
|
|
assertEquals('', goog.string.path.extension('........'));
|
|
assertEquals('', goog.string.path.extension(''));
|
|
}
|