<?php
require_once 'core/helpers/url.php';
class URLTest extends PHPUnit_Framework_TestCase {
function SetUp() {
$_SERVER['REQUEST_URI'] = "/test/path/?f=1#foo";
$_SERVER['HTTP_HOST'] = "test.example.com";
}
function testGet() {
$this->assertEquals("/test/path/?f=1", URL::get());
}
function testAdd(){
$this->assertEquals("/test/path/?f=1&x=1", URL::add('x',1));
$this->assertEquals("/test/path/?f=1&y=2", URL::add(Array('y'=>2)));
$this->assertEquals("/test/path/?f=1&a=b&c=d", URL::add(Array('a'=>'b','c'=>'d')));
$url = URL::add(Array('y'=>2));
$this->assertEquals("/test/path/?f=1&y=2", URL::get($url));
$this->assertEquals("/test/path/?f=1&y=2&x=3", URL::add('x', 3, $url));
$this->assertEquals("/test/path/?f=1&y=2&b=5&v=4", URL::add(Array('b'=> 5, 'v'=>4),false, $url));
$this->assertEquals("/test/path/?f=1&y=2&d=5&z=4", $url = URL::add(Array('d'=> 5, 'z'=>4),false, $url));
$this->assertEquals("/test/path/?f=1&y=2&z=4", URL::remove('d', $url));
$this->assertEquals("/test/path/", URL::remove(false, $url));
}
function testIgnore(){
$url = URL::add(Array('y'=>2,'x'=>3));
URL::ignore('x');
$this->assertEquals("/test/path/?f=1&y=2", URL::get($url));
}
function testPath(){
$this->assertEquals("/test/mod/path/", URL::path('test/mod/path'));
$this->assertEquals("/test/mod/path2/", URL::path('test','mod','path2'));
$this->assertEquals("/test/mod/path3/", URL::path(Array('test','mod','path3')));
}
function testFile(){
$this->assertEquals("/test/mod/file", URL::file('test/mod/file'));
$this->assertEquals("/test/mod/file2", URL::file('test','mod','file2'));
$this->assertEquals("/test/mod/file3", URL::file(Array('test','mod','file3')));
}
function testCanonical(){
$this->assertEquals("http://test.example.com/test/path/", URL::canonical());
$this->assertEquals("http://test.example.com/test/path/?f=1", URL::canonical(false, true));
URL::protocol('https');
$this->assertEquals("https://test.example.com/test/path/", URL::canonical());
}
function testHash(){
$this->assertEquals("/test/path/?f=1#testhash", URL::hash('testhash'));
}
function testArgs(){
$this->assertEquals(Array('f'=>1), URL::args());
$url = URL::add('t',3);
$this->assertEquals(Array('f'=>1, 't'=>3), URL::args(false, false ,$url));
$url = new URL();
$url->add('t',2);
$this->assertEquals(Array('f'=>1, 't'=>2), $url->args());
}
/**
* @test
*/
function instanceTest(){
$url = new URL();
ob_start();
echo $url;
$str = ob_get_clean();
$this->assertEquals("/test/path/?f=1", $str);
$this->assertEquals("/test/path/?f=1&c=4", $url->add('c',4));
$this->assertEquals("/test/path/?f=1&c=4&z=5", $url->add('z',5));
$this->assertEquals("/test/path/?f=1&z=5", $url->remove('c'));
}
/*
* @test
*/
function testArray(){
$this->assertEquals("/test/path/?f=1&a[0]=1&a[1]=2", urldecode(URL::add('a',Array(1,2))));
$this->assertEquals("/test/path/?f=1&a[a]=1&a[b]=2", urldecode(URL::add('a',Array('a'=>1,'b'=>2))));
$url = new URL();
$this->assertEquals("/test/path/?f=1&x[a]=1&x[b]=2", urldecode($url->add('x',Array('a'=>1,'b'=>2))));
}
}
?>
|