annotate vendor/webmozart/path-util/tests/UrlTest.php @ 19:fa3358dc1485 tip

Add ndrum files
author Chris Cannam
date Wed, 28 Aug 2019 13:14:47 +0100
parents 4c8ae668cc8c
children
rev   line source
Chris@0 1 <?php
Chris@0 2
Chris@0 3 /*
Chris@0 4 * This file is part of the webmozart/path-util package.
Chris@0 5 *
Chris@0 6 * (c) Bernhard Schussek <bschussek@gmail.com>
Chris@0 7 *
Chris@0 8 * For the full copyright and license information, please view the LICENSE
Chris@0 9 * file that was distributed with this source code.
Chris@0 10 */
Chris@0 11
Chris@0 12 namespace Webmozart\PathUtil\Tests;
Chris@0 13
Chris@0 14 use Webmozart\PathUtil\Url;
Chris@0 15
Chris@0 16 /**
Chris@0 17 * @since 2.3
Chris@0 18 *
Chris@0 19 * @author Bernhard Schussek <bschussek@gmail.com>
Chris@0 20 * @author Claudio Zizza <claudio@budgegeria.de>
Chris@0 21 */
Chris@0 22 class UrlTest extends \PHPUnit_Framework_TestCase
Chris@0 23 {
Chris@0 24 /**
Chris@0 25 * @dataProvider provideMakeRelativeTests
Chris@0 26 * @covers Webmozart\PathUtil\Url
Chris@0 27 */
Chris@0 28 public function testMakeRelative($absolutePath, $basePath, $relativePath)
Chris@0 29 {
Chris@0 30 $host = 'http://example.com';
Chris@0 31
Chris@0 32 $relative = Url::makeRelative($host.$absolutePath, $host.$basePath);
Chris@0 33 $this->assertSame($relativePath, $relative);
Chris@0 34 $relative = Url::makeRelative($absolutePath, $host.$basePath);
Chris@0 35 $this->assertSame($relativePath, $relative);
Chris@0 36 }
Chris@0 37
Chris@0 38 /**
Chris@0 39 * @dataProvider provideMakeRelativeIsAlreadyRelativeTests
Chris@0 40 * @covers Webmozart\PathUtil\Url
Chris@0 41 */
Chris@0 42 public function testMakeRelativeIsAlreadyRelative($absolutePath, $basePath, $relativePath)
Chris@0 43 {
Chris@0 44 $host = 'http://example.com';
Chris@0 45
Chris@0 46 $relative = Url::makeRelative($absolutePath, $host.$basePath);
Chris@0 47 $this->assertSame($relativePath, $relative);
Chris@0 48 }
Chris@0 49
Chris@0 50 /**
Chris@0 51 * @dataProvider provideMakeRelativeTests
Chris@0 52 * @covers Webmozart\PathUtil\Url
Chris@0 53 */
Chris@0 54 public function testMakeRelativeWithFullUrl($absolutePath, $basePath, $relativePath)
Chris@0 55 {
Chris@0 56 $host = 'ftp://user:password@example.com:8080';
Chris@0 57
Chris@0 58 $relative = Url::makeRelative($host.$absolutePath, $host.$basePath);
Chris@0 59 $this->assertSame($relativePath, $relative);
Chris@0 60 }
Chris@0 61
Chris@0 62 /**
Chris@0 63 * @expectedException \InvalidArgumentException
Chris@0 64 * @expectedExceptionMessage The URL must be a string. Got: array
Chris@0 65 * @covers Webmozart\PathUtil\Url
Chris@0 66 */
Chris@0 67 public function testMakeRelativeFailsIfInvalidUrl()
Chris@0 68 {
Chris@0 69 Url::makeRelative(array(), 'http://example.com/webmozart/puli');
Chris@0 70 }
Chris@0 71
Chris@0 72 /**
Chris@0 73 * @expectedException \InvalidArgumentException
Chris@0 74 * @expectedExceptionMessage The base URL must be a string. Got: array
Chris@0 75 * @covers Webmozart\PathUtil\Url
Chris@0 76 */
Chris@0 77 public function testMakeRelativeFailsIfInvalidBaseUrl()
Chris@0 78 {
Chris@0 79 Url::makeRelative('http://example.com/webmozart/puli/css/style.css', array());
Chris@0 80 }
Chris@0 81
Chris@0 82 /**
Chris@0 83 * @expectedException \InvalidArgumentException
Chris@0 84 * @expectedExceptionMessage "webmozart/puli" is not an absolute Url.
Chris@0 85 * @covers Webmozart\PathUtil\Url
Chris@0 86 */
Chris@0 87 public function testMakeRelativeFailsIfBaseUrlNoUrl()
Chris@0 88 {
Chris@0 89 Url::makeRelative('http://example.com/webmozart/puli/css/style.css', 'webmozart/puli');
Chris@0 90 }
Chris@0 91
Chris@0 92 /**
Chris@0 93 * @expectedException \InvalidArgumentException
Chris@0 94 * @expectedExceptionMessage "" is not an absolute Url.
Chris@0 95 * @covers Webmozart\PathUtil\Url
Chris@0 96 */
Chris@0 97 public function testMakeRelativeFailsIfBaseUrlEmpty()
Chris@0 98 {
Chris@0 99 Url::makeRelative('http://example.com/webmozart/puli/css/style.css', '');
Chris@0 100 }
Chris@0 101
Chris@0 102 /**
Chris@0 103 * @expectedException \InvalidArgumentException
Chris@0 104 * @expectedExceptionMessage The base URL must be a string. Got: NULL
Chris@0 105 * @covers Webmozart\PathUtil\Url
Chris@0 106 */
Chris@0 107 public function testMakeRelativeFailsIfBaseUrlNull()
Chris@0 108 {
Chris@0 109 Url::makeRelative('http://example.com/webmozart/puli/css/style.css', null);
Chris@0 110 }
Chris@0 111
Chris@0 112 /**
Chris@0 113 * @expectedException \InvalidArgumentException
Chris@0 114 * @expectedExceptionMessage The URL "http://example.com" cannot be made relative to "http://example2.com" since
Chris@0 115 * their host names are different.
Chris@0 116 * @covers Webmozart\PathUtil\Url
Chris@0 117 */
Chris@0 118 public function testMakeRelativeFailsIfDifferentDomains()
Chris@0 119 {
Chris@0 120 Url::makeRelative('http://example.com/webmozart/puli/css/style.css', 'http://example2.com/webmozart/puli');
Chris@0 121 }
Chris@0 122
Chris@0 123 public function provideMakeRelativeTests()
Chris@0 124 {
Chris@0 125 return array(
Chris@0 126
Chris@0 127 array('/webmozart/puli/css/style.css', '/webmozart/puli', 'css/style.css'),
Chris@0 128 array('/webmozart/puli/css/style.css?key=value&key2=value', '/webmozart/puli', 'css/style.css?key=value&key2=value'),
Chris@0 129 array('/webmozart/puli/css/style.css?key[]=value&key[]=value', '/webmozart/puli', 'css/style.css?key[]=value&key[]=value'),
Chris@0 130 array('/webmozart/css/style.css', '/webmozart/puli', '../css/style.css'),
Chris@0 131 array('/css/style.css', '/webmozart/puli', '../../css/style.css'),
Chris@0 132 array('/', '/', ''),
Chris@0 133
Chris@0 134 // relative to root
Chris@0 135 array('/css/style.css', '/', 'css/style.css'),
Chris@0 136
Chris@0 137 // same sub directories in different base directories
Chris@0 138 array('/puli/css/style.css', '/webmozart/css', '../../puli/css/style.css'),
Chris@0 139
Chris@0 140 array('/webmozart/puli/./css/style.css', '/webmozart/puli', 'css/style.css'),
Chris@0 141 array('/webmozart/puli/../css/style.css', '/webmozart/puli', '../css/style.css'),
Chris@0 142 array('/webmozart/puli/.././css/style.css', '/webmozart/puli', '../css/style.css'),
Chris@0 143 array('/webmozart/puli/./../css/style.css', '/webmozart/puli', '../css/style.css'),
Chris@0 144 array('/webmozart/puli/../../css/style.css', '/webmozart/puli', '../../css/style.css'),
Chris@0 145 array('/webmozart/puli/css/style.css', '/webmozart/./puli', 'css/style.css'),
Chris@0 146 array('/webmozart/puli/css/style.css', '/webmozart/../puli', '../webmozart/puli/css/style.css'),
Chris@0 147 array('/webmozart/puli/css/style.css', '/webmozart/./../puli', '../webmozart/puli/css/style.css'),
Chris@0 148 array('/webmozart/puli/css/style.css', '/webmozart/.././puli', '../webmozart/puli/css/style.css'),
Chris@0 149 array('/webmozart/puli/css/style.css', '/webmozart/../../puli', '../webmozart/puli/css/style.css'),
Chris@0 150
Chris@0 151 // first argument shorter than second
Chris@0 152 array('/css', '/webmozart/puli', '../../css'),
Chris@0 153
Chris@0 154 // second argument shorter than first
Chris@0 155 array('/webmozart/puli', '/css', '../webmozart/puli'),
Chris@0 156
Chris@0 157 array('', '', ''),
Chris@0 158 );
Chris@0 159 }
Chris@0 160
Chris@0 161 public function provideMakeRelativeIsAlreadyRelativeTests()
Chris@0 162 {
Chris@0 163 return array(
Chris@0 164 array('css/style.css', '/webmozart/puli', 'css/style.css'),
Chris@0 165 array('css/style.css', '', 'css/style.css'),
Chris@0 166 array('css/../style.css', '', 'style.css'),
Chris@0 167 array('css/./style.css', '', 'css/style.css'),
Chris@0 168 array('../style.css', '/', 'style.css'),
Chris@0 169 array('./style.css', '/', 'style.css'),
Chris@0 170 array('../../style.css', '/', 'style.css'),
Chris@0 171 array('../../style.css', '', 'style.css'),
Chris@0 172 array('./style.css', '', 'style.css'),
Chris@0 173 array('../style.css', '', 'style.css'),
Chris@0 174 array('./../style.css', '', 'style.css'),
Chris@0 175 array('css/./../style.css', '', 'style.css'),
Chris@0 176 array('css//style.css', '', 'css/style.css'),
Chris@0 177 );
Chris@0 178 }
Chris@0 179 }