| // 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('')); |
| } |