testcase.php
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
<?php
include 'URL.php';
class URL_Testcase
{
static public function run()
{
$with = create_function('$x', 'return $x;');
$a = new URL('http://www.ikhoefgeen.nl');
assert('!isset($a->path)');
$b = new URL('/test/');
assert('!isset($b->host)');
assert('isset($b->path) && $b->path == "/test/"');
$c = new URL('alfa-beta');
$d = new URL('pagina.html#test');
assert('$d->fragment == "test"');
$e = URL::format('https://ikhoefgeen.nl/index/taart.php?a=%s&c=%s#linkList', 'b', 'd');
assert('$a->merge($b) == "http://www.ikhoefgeen.nl/test/"');
assert('$a->merge($c) == "http://www.ikhoefgeen.nl/alfa-beta"');
assert('$a->merge($d) == "http://www.ikhoefgeen.nl/pagina.html#test"');
assert('$a->merge($e) == "https://ikhoefgeen.nl/index/taart.php?a=b&c=d#linkList"');
$f = new URL('/alfa/beta/gamma/delta');
$g = new URL('../../epsilon/');
// bovenliggende urls lossen /../-stappen op.
assert('$a->merge($f)->merge($g) == "http://www.ikhoefgeen.nl/alfa/epsilon/"');
// losse onderdelen zijn apart in te stellen
$h = clone $g;
$h->scheme = 'http';
$h->host = 'www.ikhoef-geen.nl';
$h->port = 8084;
$h->query = 'alfa=beta&gamma=delta';
assert('$h == "http://www.ikhoef-geen.nl:8084/../../epsilon/?alfa=beta&gamma=delta"');
// query-onderdelen zijn toe te voegen
$h->query['taart'] = 'appel';
assert('$h == "http://www.ikhoef-geen.nl:8084/../../epsilon/?alfa=beta&gamma=delta&taart=appel"');
// volgorde query verandert niet zomaar wanneer je een query-onderdeel verandert
$h->query['alfa'] = 'grieks';
assert('$h == "http://www.ikhoef-geen.nl:8084/../../epsilon/?alfa=grieks&gamma=delta&taart=appel"');
$j = new URL('?a=b&e=fout');
$k = new URL('?c=d&e=goed');
// queries worden ook gemerged: overschrijft wanneer naam al bestaat
assert('$j->merge($k) == "?a=b&e=goed&c=d"');
// query kan ook een array zijn, gaat goed.
$l = new URL('?a[]=a&a[]=b&a[]=c');
assert('is_array($l->query["a"])');
echo "All OK";
}
}
URL_Testcase::run();
include 'URL.php';
class URL_Testcase
{
static public function run()
{
$with = create_function('$x', 'return $x;');
$a = new URL('http://www.ikhoefgeen.nl');
assert('!isset($a->path)');
$b = new URL('/test/');
assert('!isset($b->host)');
assert('isset($b->path) && $b->path == "/test/"');
$c = new URL('alfa-beta');
$d = new URL('pagina.html#test');
assert('$d->fragment == "test"');
$e = URL::format('https://ikhoefgeen.nl/index/taart.php?a=%s&c=%s#linkList', 'b', 'd');
assert('$a->merge($b) == "http://www.ikhoefgeen.nl/test/"');
assert('$a->merge($c) == "http://www.ikhoefgeen.nl/alfa-beta"');
assert('$a->merge($d) == "http://www.ikhoefgeen.nl/pagina.html#test"');
assert('$a->merge($e) == "https://ikhoefgeen.nl/index/taart.php?a=b&c=d#linkList"');
$f = new URL('/alfa/beta/gamma/delta');
$g = new URL('../../epsilon/');
// bovenliggende urls lossen /../-stappen op.
assert('$a->merge($f)->merge($g) == "http://www.ikhoefgeen.nl/alfa/epsilon/"');
// losse onderdelen zijn apart in te stellen
$h = clone $g;
$h->scheme = 'http';
$h->host = 'www.ikhoef-geen.nl';
$h->port = 8084;
$h->query = 'alfa=beta&gamma=delta';
assert('$h == "http://www.ikhoef-geen.nl:8084/../../epsilon/?alfa=beta&gamma=delta"');
// query-onderdelen zijn toe te voegen
$h->query['taart'] = 'appel';
assert('$h == "http://www.ikhoef-geen.nl:8084/../../epsilon/?alfa=beta&gamma=delta&taart=appel"');
// volgorde query verandert niet zomaar wanneer je een query-onderdeel verandert
$h->query['alfa'] = 'grieks';
assert('$h == "http://www.ikhoef-geen.nl:8084/../../epsilon/?alfa=grieks&gamma=delta&taart=appel"');
$j = new URL('?a=b&e=fout');
$k = new URL('?c=d&e=goed');
// queries worden ook gemerged: overschrijft wanneer naam al bestaat
assert('$j->merge($k) == "?a=b&e=goed&c=d"');
// query kan ook een array zijn, gaat goed.
$l = new URL('?a[]=a&a[]=b&a[]=c');
assert('is_array($l->query["a"])');
echo "All OK";
}
}
URL_Testcase::run();