* @license http://www.apache.org/licenses/LICENSE-2.0 * @link http://phpsx.org */ class UrlTest extends TestCase { public function testUrl() { $url = new Url('http://benutzername:passwort@hostname:8080/pfad?argument=wert#textanker'); $this->assertEquals('http', $url->getScheme()); $this->assertEquals('benutzername:passwort', $url->getUserInfo()); $this->assertEquals('hostname', $url->getHost()); $this->assertEquals('8080', $url->getPort()); $this->assertEquals('/pfad', $url->getPath()); $this->assertEquals(array('argument' => 'wert'), $url->getParameters()); $this->assertEquals('textanker', $url->getFragment()); } public function testUrlIpv6() { $url = new Url('http://[FEDC:BA98:7654:3210:FEDC:BA98:7654:3210]:80/index.html'); $this->assertEquals('http', $url->getScheme()); $this->assertEquals(null, $url->getUserInfo()); $this->assertEquals('[FEDC:BA98:7654:3210:FEDC:BA98:7654:3210]', $url->getHost()); $this->assertEquals(80, $url->getPort()); $this->assertEquals('/index.html', $url->getPath()); $this->assertEquals(array(), $url->getParameters()); $this->assertEquals(null, $url->getFragment()); } /** * @expectedException \InvalidArgumentException */ public function testInvalidUrl() { new Url('foobar'); } /** * @expectedException \InvalidArgumentException */ public function testInvalidUrlEmptyHost() { new Url('foo://'); } /** * @expectedException \InvalidArgumentException */ public function testInvalidUrlEmptyHostButPath() { new Url('foo:///foo'); } /** * @expectedException \InvalidArgumentException */ public function testInvalidUrlEmptyHostButQuery() { new Url('foo://?foo=bar'); } /** * @expectedException \InvalidArgumentException */ public function testInvalidUrlEmptyHostButFragment() { new Url('foo://#foo'); } public function testPort() { $uri = new Url('http://www.yahoo.com:8080/'); $this->assertEquals('http://www.yahoo.com:8080/', $uri->toString()); } /** * @expectedException \InvalidArgumentException */ public function testSetPortInvalidRangeMin() { $port = -1; $uri = new Url('http://www.yahoo.com:' . $port . '/'); } /** * @expectedException \InvalidArgumentException */ public function testSetPortInvalidRangeMax() { $port = 0xFFFF + 1; $uri = new Url('http://www.yahoo.com:' . $port . '/'); } public function testShortUrls() { $url = new Url('//www.yahoo.com'); $this->assertEquals('http://www.yahoo.com', $url->toString()); } public function testUrlWithoutFile() { $url = new Url('http://127.0.0.1/projects/foo/bar/?project=symfony%2Fsymfony&source=1&destination=2'); $this->assertEquals('http', $url->getScheme()); $this->assertEquals(null, $url->getUserInfo()); $this->assertEquals('127.0.0.1', $url->getHost()); $this->assertEquals(null, $url->getPort()); $this->assertEquals('/projects/foo/bar/', $url->getPath()); $this->assertEquals(array('project' => 'symfony/symfony', 'source' => '1', 'destination' => '2'), $url->getParameters()); $this->assertEquals(null, $url->getFragment()); } public function testUrlFragmentEncoding() { $url = new Url('http://127.0.0.1/foobar?bar=foo#!"#$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~'); $this->assertEquals('http', $url->getScheme()); $this->assertEquals(null, $url->getUserInfo()); $this->assertEquals('127.0.0.1', $url->getHost()); $this->assertEquals(null, $url->getPort()); $this->assertEquals('/foobar', $url->getPath()); $this->assertEquals(array('bar' => 'foo'), $url->getParameters()); $this->assertEquals('!"#$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~', $url->getFragment()); } } __halt_compiler();----SIGNATURE:----oIMlEIqBquJ84k+Xh7mohR39hxlmvyiVSvXPZNei98OH5+KZegqiZ7TUm7N2oc84PDtCr1SXUM5KuqYG5PsWbBVHiFX4gnedUVqcK3rUtCrQ9RZE4HhvjfrHa34YY/1RChVo4fvkkO/d9mE0eq24MA4kZVvNqy16vBXeAPtv74iPXPMQoafuCyzMrFLLsHHJckZ8wDp/Ai6ETBQP93rT2to4RSn/9AAzFFUjzHh6wKIHPHM+BXBP79kNeTlbdg9cvYbKUWP18oa1UzZaQnoJ3UPxOXmN5EQsm3gkhnVLD8822xHFjm9b/iCID5y+rC2vd2RydEEkpdxFRf83/KswR9R4limGzqFCEP+ADRL5D2E08/ECbJ3MOmP8y4+aQ/sIwkgzmx4lj42+qov5JUZHdCo1DodtRWDOVr2GSh5zsMp6HLeLoXqSz/j1YSvYi2Hi36LHAucYehFs5n8cj0+1VOEB13t9vkVDopUsJZaDb+UCoD36nIP0TTU3hja03qWQmhBadAv1I96pXVJHrhf+IX3w4KZ2MsxzlzTKf5cB4PaEh7EyfYm6gXz793MnXKS9P+b//4FMkPDidQmI009kgR5yiztGLxyEZ0FjTe7XS6Ov33EAcUSLhDMNVOYJ6BmeAVHeBJU3O7DC0KRYOcq6/hdHeq0/9d3h34UQ2Nulcyc=----ATTACHMENT:----ODI4MjQwNTA4MzIwODIxNSA1NTc0NTE3MjgyNDcwNjU1IDQ3OTQ4ODkzNTE5NzI1NTA=