Mercurial > hg > isophonics-drupal-site
diff vendor/webmozart/path-util/tests/UrlTest.php @ 0:4c8ae668cc8c
Initial import (non-working)
author | Chris Cannam |
---|---|
date | Wed, 29 Nov 2017 16:09:58 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/webmozart/path-util/tests/UrlTest.php Wed Nov 29 16:09:58 2017 +0000 @@ -0,0 +1,179 @@ +<?php + +/* + * This file is part of the webmozart/path-util package. + * + * (c) Bernhard Schussek <bschussek@gmail.com> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Webmozart\PathUtil\Tests; + +use Webmozart\PathUtil\Url; + +/** + * @since 2.3 + * + * @author Bernhard Schussek <bschussek@gmail.com> + * @author Claudio Zizza <claudio@budgegeria.de> + */ +class UrlTest extends \PHPUnit_Framework_TestCase +{ + /** + * @dataProvider provideMakeRelativeTests + * @covers Webmozart\PathUtil\Url + */ + public function testMakeRelative($absolutePath, $basePath, $relativePath) + { + $host = 'http://example.com'; + + $relative = Url::makeRelative($host.$absolutePath, $host.$basePath); + $this->assertSame($relativePath, $relative); + $relative = Url::makeRelative($absolutePath, $host.$basePath); + $this->assertSame($relativePath, $relative); + } + + /** + * @dataProvider provideMakeRelativeIsAlreadyRelativeTests + * @covers Webmozart\PathUtil\Url + */ + public function testMakeRelativeIsAlreadyRelative($absolutePath, $basePath, $relativePath) + { + $host = 'http://example.com'; + + $relative = Url::makeRelative($absolutePath, $host.$basePath); + $this->assertSame($relativePath, $relative); + } + + /** + * @dataProvider provideMakeRelativeTests + * @covers Webmozart\PathUtil\Url + */ + public function testMakeRelativeWithFullUrl($absolutePath, $basePath, $relativePath) + { + $host = 'ftp://user:password@example.com:8080'; + + $relative = Url::makeRelative($host.$absolutePath, $host.$basePath); + $this->assertSame($relativePath, $relative); + } + + /** + * @expectedException \InvalidArgumentException + * @expectedExceptionMessage The URL must be a string. Got: array + * @covers Webmozart\PathUtil\Url + */ + public function testMakeRelativeFailsIfInvalidUrl() + { + Url::makeRelative(array(), 'http://example.com/webmozart/puli'); + } + + /** + * @expectedException \InvalidArgumentException + * @expectedExceptionMessage The base URL must be a string. Got: array + * @covers Webmozart\PathUtil\Url + */ + public function testMakeRelativeFailsIfInvalidBaseUrl() + { + Url::makeRelative('http://example.com/webmozart/puli/css/style.css', array()); + } + + /** + * @expectedException \InvalidArgumentException + * @expectedExceptionMessage "webmozart/puli" is not an absolute Url. + * @covers Webmozart\PathUtil\Url + */ + public function testMakeRelativeFailsIfBaseUrlNoUrl() + { + Url::makeRelative('http://example.com/webmozart/puli/css/style.css', 'webmozart/puli'); + } + + /** + * @expectedException \InvalidArgumentException + * @expectedExceptionMessage "" is not an absolute Url. + * @covers Webmozart\PathUtil\Url + */ + public function testMakeRelativeFailsIfBaseUrlEmpty() + { + Url::makeRelative('http://example.com/webmozart/puli/css/style.css', ''); + } + + /** + * @expectedException \InvalidArgumentException + * @expectedExceptionMessage The base URL must be a string. Got: NULL + * @covers Webmozart\PathUtil\Url + */ + public function testMakeRelativeFailsIfBaseUrlNull() + { + Url::makeRelative('http://example.com/webmozart/puli/css/style.css', null); + } + + /** + * @expectedException \InvalidArgumentException + * @expectedExceptionMessage The URL "http://example.com" cannot be made relative to "http://example2.com" since + * their host names are different. + * @covers Webmozart\PathUtil\Url + */ + public function testMakeRelativeFailsIfDifferentDomains() + { + Url::makeRelative('http://example.com/webmozart/puli/css/style.css', 'http://example2.com/webmozart/puli'); + } + + public function provideMakeRelativeTests() + { + return array( + + array('/webmozart/puli/css/style.css', '/webmozart/puli', 'css/style.css'), + array('/webmozart/puli/css/style.css?key=value&key2=value', '/webmozart/puli', 'css/style.css?key=value&key2=value'), + array('/webmozart/puli/css/style.css?key[]=value&key[]=value', '/webmozart/puli', 'css/style.css?key[]=value&key[]=value'), + array('/webmozart/css/style.css', '/webmozart/puli', '../css/style.css'), + array('/css/style.css', '/webmozart/puli', '../../css/style.css'), + array('/', '/', ''), + + // relative to root + array('/css/style.css', '/', 'css/style.css'), + + // same sub directories in different base directories + array('/puli/css/style.css', '/webmozart/css', '../../puli/css/style.css'), + + array('/webmozart/puli/./css/style.css', '/webmozart/puli', 'css/style.css'), + array('/webmozart/puli/../css/style.css', '/webmozart/puli', '../css/style.css'), + array('/webmozart/puli/.././css/style.css', '/webmozart/puli', '../css/style.css'), + array('/webmozart/puli/./../css/style.css', '/webmozart/puli', '../css/style.css'), + array('/webmozart/puli/../../css/style.css', '/webmozart/puli', '../../css/style.css'), + array('/webmozart/puli/css/style.css', '/webmozart/./puli', 'css/style.css'), + array('/webmozart/puli/css/style.css', '/webmozart/../puli', '../webmozart/puli/css/style.css'), + array('/webmozart/puli/css/style.css', '/webmozart/./../puli', '../webmozart/puli/css/style.css'), + array('/webmozart/puli/css/style.css', '/webmozart/.././puli', '../webmozart/puli/css/style.css'), + array('/webmozart/puli/css/style.css', '/webmozart/../../puli', '../webmozart/puli/css/style.css'), + + // first argument shorter than second + array('/css', '/webmozart/puli', '../../css'), + + // second argument shorter than first + array('/webmozart/puli', '/css', '../webmozart/puli'), + + array('', '', ''), + ); + } + + public function provideMakeRelativeIsAlreadyRelativeTests() + { + return array( + array('css/style.css', '/webmozart/puli', 'css/style.css'), + array('css/style.css', '', 'css/style.css'), + array('css/../style.css', '', 'style.css'), + array('css/./style.css', '', 'css/style.css'), + array('../style.css', '/', 'style.css'), + array('./style.css', '/', 'style.css'), + array('../../style.css', '/', 'style.css'), + array('../../style.css', '', 'style.css'), + array('./style.css', '', 'style.css'), + array('../style.css', '', 'style.css'), + array('./../style.css', '', 'style.css'), + array('css/./../style.css', '', 'style.css'), + array('css//style.css', '', 'css/style.css'), + ); + } +}