| [ Index ] |
PHP Cross Reference of Limb3 |
[Summary view] [Print] [Text view]
1 <?php 2 /* 3 * Limb PHP Framework 4 * 5 * @link http://limb-project.com 6 * @copyright Copyright © 2004-2007 BIT(http://bit-creative.com) 7 * @license LGPL http://www.gnu.org/copyleft/lesser.html 8 */ 9 lmb_require('limb/net/src/lmbUri.class.php'); 10 11 class lmbUriTest extends UnitTestCase 12 { 13 function testCreate() 14 { 15 $str = 'http://admin:test@localhost:81/test.php/test?foo=bar#23'; 16 17 $uri = new lmbUri($str); 18 19 $this->assertEqual($uri->getProtocol(), 'http'); 20 $this->assertEqual($uri->getHost(), 'localhost'); 21 $this->assertEqual($uri->getUser(), 'admin'); 22 $this->assertEqual($uri->getPassword(), 'test'); 23 $this->assertEqual($uri->getPort(), '81'); 24 $this->assertEqual($uri->getAnchor(), '23'); 25 26 $this->assertEqual($uri->getQueryItem('foo'), 'bar'); 27 $this->assertEqual($uri->countQueryItems(), 1); 28 29 $this->assertEqual($uri->getPath(), '/test.php/test'); 30 $this->assertEqual($uri->countPath(), 3); 31 $this->assertEqual($uri->getPathElements(), array('', 'test.php', 'test')); 32 $this->assertEqual($uri->getPathElement(0), ''); 33 $this->assertEqual($uri->getPathElement(1), 'test.php'); 34 $this->assertEqual($uri->getPathElement(2), 'test'); 35 } 36 37 function testInvalidUriThrowsException() 38 { 39 try 40 { 41 $uri = new lmbUri('http:///'); 42 $this->assertTrue(false); 43 } 44 catch(lmbException $e){} 45 } 46 47 function testToStringDefault() 48 { 49 $str = 'http://admin:test@localhost:81/test.php?foo=bar#23'; 50 51 $uri = new lmbUri($str); 52 53 $this->assertEqual($uri->toString(), $str); 54 } 55 56 function testToStringQueryItemsSort() 57 { 58 $str = 'http://localhost/test.php?b=1&a=2&c[1]=456'; 59 $expected_url = 'http://localhost/test.php?a=2&b=1&c[1]=456'; 60 61 $uri = new lmbUri($str); 62 63 $this->assertEqual($uri->toString(), $expected_url); 64 } 65 66 function testToStringNoProtocol() 67 { 68 $str = 'http://admin:test@localhost:81/test.php?foo=bar#23'; 69 70 $uri = new lmbUri($str); 71 72 $this->assertEqual( 73 $uri->toString(array('user', 'password', 'host', 'port', 'path', 'query', 'anchor')), 74 'admin:test@localhost:81/test.php?foo=bar#23' 75 ); 76 } 77 78 function testToStringNoUser() 79 { 80 $str = 'http://admin:test@localhost:81/test.php?foo=bar#23'; 81 82 $uri = new lmbUri($str); 83 84 $this->assertEqual( 85 $uri->toString(array('protocol', 'password', 'host', 'port', 'path', 'query', 'anchor')), 86 'http://localhost:81/test.php?foo=bar#23' 87 ); 88 } 89 90 function testToStringNoPassword() 91 { 92 $str = 'http://admin:test@localhost:81/test.php?foo=bar#23'; 93 94 $uri = new lmbUri($str); 95 96 $this->assertEqual( 97 $uri->toString(array('protocol', 'user', 'host', 'port', 'path', 'query', 'anchor')), 98 'http://admin@localhost:81/test.php?foo=bar#23' 99 ); 100 } 101 102 function testToStringNoHost() 103 { 104 $str = 'http://admin:test@localhost:81/test.php?foo=bar#23'; 105 106 $uri = new lmbUri($str); 107 108 $this->assertEqual( 109 $uri->toString(array('protocol', 'user', 'password', 'port', 'path', 'query', 'anchor')), 110 '/test.php?foo=bar#23' 111 ); 112 } 113 114 function testToStringNoPath() 115 { 116 $str = 'http://admin:test@localhost:81/test.php?foo=bar#23'; 117 118 $uri = new lmbUri($str); 119 120 $this->assertEqual( 121 $uri->toString(array('protocol', 'user', 'password', 'host', 'port', 'query', 'anchor')), 122 'http://admin:test@localhost:81?foo=bar#23' 123 ); 124 } 125 126 function testToStringNoQuery() 127 { 128 $str = 'http://admin:test@localhost:81/test.php?foo=bar#23'; 129 130 $uri = new lmbUri($str); 131 132 $this->assertEqual( 133 $uri->toString(array('protocol', 'user', 'password', 'host', 'port', 'path', 'anchor')), 134 'http://admin:test@localhost:81/test.php#23' 135 ); 136 } 137 138 function testToStringNoAnchor() 139 { 140 $str = 'http://admin:test@localhost:81/test.php?foo=bar#23'; 141 142 $uri = new lmbUri($str); 143 144 $this->assertEqual( 145 $uri->toString(array('protocol', 'user', 'password', 'host', 'port', 'path')), 146 'http://admin:test@localhost:81/test.php' 147 ); 148 } 149 150 function testSetQueryString() 151 { 152 $str = 'http://localhost'; 153 154 $uri = new lmbUri($str); 155 156 $uri->setQueryString('foo=bar&bar=foo'); 157 158 $this->assertEqual($uri->countQueryItems(), 2); 159 $this->assertEqual($uri->getQueryItem('foo'), 'bar'); 160 $this->assertEqual($uri->getQueryItem('bar'), 'foo'); 161 } 162 163 function testSetQueryString2() 164 { 165 $str = 'http://localhost'; 166 167 $uri = new lmbUri($str); 168 $uri->setQueryString('foo[i1]=1&foo[i2]=2'); 169 170 $this->assertEqual($uri->countQueryItems(), 1); 171 $this->assertEqual($uri->getQueryItem('foo'), array('i1' => '1', 'i2' => '2')); 172 } 173 174 function testNormalizePath() 175 { 176 $uri = new lmbUri('/foo/bar/../boo.php'); 177 $uri->normalizePath(); 178 $this->assertEqual($uri, new lmbUri('/foo/boo.php')); 179 180 $uri->reset('/foo/bar/../../boo.php'); 181 $uri->normalizePath(); 182 $this->assertEqual($uri, new lmbUri('/boo.php')); 183 184 $uri->reset('/foo/bar/../boo.php'); 185 $uri->normalizePath(); 186 $this->assertEqual($uri, new lmbUri('/foo/boo.php')); 187 188 $uri->reset('/foo//bar//boo.php'); 189 $uri->normalizePath(); 190 $this->assertEqual($uri, new lmbUri('/foo/bar/boo.php')); 191 192 $uri->reset('/foo//bar///boo.php'); 193 $uri->normalizePath(); 194 $this->assertEqual($uri, $uri = new lmbUri('/foo/bar/boo.php')); 195 $this->assertEqual($uri->getPath(), $uri->getPath()); 196 } 197 198 function testAddQueryItem() 199 { 200 $str = 'http://admin:test@localhost:81/test.php?foo=bar#23'; 201 202 $uri = new lmbUri($str); 203 204 $uri->addQueryItem('bar', 'foo'); 205 $this->assertEqual($uri->getQueryString(), 'bar=foo&foo=bar'); 206 } 207 208 function testAddQueryItem2() 209 { 210 $str = 'http://admin:test@localhost:81/test.php?foo=bar#23'; 211 212 $uri = new lmbUri($str); 213 214 $uri->addQueryItem('foo', 'foo'); 215 $this->assertEqual($uri->getQueryString(), 'foo=foo'); 216 } 217 218 function testAddQueryItem3() 219 { 220 $str = 'http://admin:test@localhost:81/test.php?foo=bar#23'; 221 222 $uri = new lmbUri($str); 223 224 $uri->addQueryItem('foo', array('i1' => 'bar')); 225 $uri->addQueryItem('bar', 1); 226 $this->assertEqual($uri->getQueryString(), 'bar=1&foo[i1]=bar'); 227 } 228 229 function testAddQueryItem4() 230 { 231 $str = 'http://admin:test@localhost:81/test.php?foo=bar#23'; 232 233 $uri = new lmbUri($str); 234 235 $uri->addQueryItem('foo', array('i1' => array('i2' => 'bar'))); 236 $uri->addQueryItem('bar', 1); 237 $this->assertEqual($uri->getQueryString(), 'bar=1&foo[i1][i2]=bar'); 238 } 239 240 function testAddQueryItemUrlencode() 241 { 242 $str = 'http://admin:test@localhost:81/test.php?foo=bar#23'; 243 244 $uri = new lmbUri($str); 245 246 $uri->addQueryItem('foo', ' foo '); 247 $this->assertEqual($uri->getQueryString(), 'foo=+foo+'); 248 } 249 250 function testAddQueryItemUrlencode2() 251 { 252 $str = 'http://admin:test@localhost:81/test.php?foo=bar#23'; 253 254 $uri = new lmbUri($str); 255 256 $uri->addQueryItem('foo', array('i1' => ' bar ')); 257 $this->assertEqual($uri->getQueryString(), 'foo[i1]=+bar+'); 258 } 259 260 function testCompareQueryEqual() 261 { 262 $str = 'http://admin:test@localhost2:81/test.php?bar=foo&foo=bar#23'; 263 264 $uri = new lmbUri($str); 265 266 $this->assertTrue($uri->compareQuery( 267 new lmbUri('http://admin:test@localhost:81/test.php?bar=foo&foo=bar#23') 268 )); 269 } 270 271 function testCompareQueryNotEqual() 272 { 273 $str = 'http://admin:test@localhost:81/test.php?bar=foo&foo=bar#23'; 274 275 $uri = new lmbUri($str); 276 277 $this->assertFalse($uri->compareQuery( 278 new lmbUri('http://admin:test@localhost:81/test.php?bar=foo&foo=bar2#23') 279 )); 280 } 281 282 function testCompareQueryNotEqual2() 283 { 284 $str = 'http://admin:test@localhost:81/test.php?bar=foo&foo=bar#23'; 285 286 $uri = new lmbUri($str); 287 288 $this->assertFalse($uri->compareQuery( 289 new lmbUri('http://admin:test@localhost:81/test.php?bar=foo#23') 290 )); 291 } 292 293 function testCompareIdentical() 294 { 295 $str = 'http://admin:test@localhost:81/test.php?foo=bar#23'; 296 297 $uri = new lmbUri($str); 298 299 $this->assertTrue($uri->compare( 300 new lmbUri('http://admin:test@localhost:81/test.php?foo=bar#23'))); 301 } 302 303 function testCompareEqual() 304 { 305 $str = 'http://admin:test@localhost:81/test.php?bar=foo&foo=bar#23'; 306 307 $uri = new lmbUri($str); 308 309 $this->assertTrue($uri->compare( 310 new lmbUri('http://admin:test@localhost:81/test.php?foo=bar&bar=foo#23'))); 311 } 312 313 function testCompareEqual2() 314 { 315 $str = 'http://admin:test@localhost:81?'; 316 317 $uri = new lmbUri($str); 318 319 $this->assertTrue($uri->compare( 320 new lmbUri('http://admin:test@localhost:81') 321 )); 322 } 323 324 function testCompareNotEqualSchema() 325 { 326 $str = 'http://admin:test@localhost:81/test.php?bar=foo&foo=bar#23'; 327 328 $uri = new lmbUri($str); 329 330 $this->assertFalse($uri->compare( 331 new lmbUri('https://admin:test@localhost:81/test.php?bar=foo&foo=bar#23') 332 )); 333 } 334 335 function testCompareNotEqualUser() 336 { 337 $str = 'http://admin:test@localhost:81/test.php?bar=foo&foo=bar#23'; 338 339 $uri = new lmbUri($str); 340 341 $this->assertFalse($uri->compare( 342 new lmbUri('http://admin1:test@localhost:81/test.php?bar=foo&foo=bar#23') 343 )); 344 } 345 346 function testCompareNotEqualPassword() 347 { 348 $str = 'http://admin:test@localhost:81/test.php?bar=foo&foo=bar#23'; 349 350 $uri = new lmbUri($str); 351 352 $this->assertFalse($uri->compare( 353 new lmbUri('http://admin:test1@localhost:81/test.php?bar=foo&foo=bar#23') 354 )); 355 } 356 357 function testCompareNotEqualHost() 358 { 359 $str = 'http://admin:test@localhost:81/test.php?bar=foo&foo=bar#23'; 360 361 $uri = new lmbUri($str); 362 363 $this->assertFalse($uri->compare( 364 new lmbUri('http://admin:test@localhost1:81/test.php?bar=foo&foo=bar#23') 365 )); 366 } 367 368 function testCompareNotEqualPort() 369 { 370 $str = 'http://admin:test@localhost:81/test.php?bar=foo&foo=bar#23'; 371 372 $uri = new lmbUri($str); 373 374 $this->assertFalse($uri->compare( 375 new lmbUri('http://admin:test@localhost/test.php?bar=foo&foo=bar#23') 376 )); 377 } 378 379 function testCompareNotEqualPath() 380 { 381 $str = 'http://admin:test@localhost:81/test.php?bar=foo&foo=bar#23'; 382 383 $uri = new lmbUri($str); 384 385 $this->assertFalse($uri->compare( 386 new lmbUri('http://admin:test@localhost:81/test.php/test?bar=foo&foo=bar#23') 387 )); 388 } 389 390 function testCompareNotEqualPath2() 391 { 392 $str = 'http://admin:test@localhost:81/test.php/test?bar=foo&foo=bar#23'; 393 394 $uri = new lmbUri($str); 395 396 $this->assertFalse($uri->compare( 397 new lmbUri('http://admin:test@localhost:81/test.php/test1?bar=foo&foo=bar#23') 398 )); 399 } 400 401 function testCompareAnchorDoesntMatter() 402 { 403 $str = 'http://admin:test@localhost:81/test.php?bar=foo&foo=bar#23'; 404 405 $uri = new lmbUri($str); 406 407 $this->assertTrue($uri->compare( 408 new lmbUri('http://admin:test@localhost:81/test.php?bar=foo&foo=bar#32') 409 )); 410 } 411 412 function testComparePathEqual() 413 { 414 $str = 'http://localhost/test.php/test'; 415 416 $uri = new lmbUri($str); 417 418 $this->assertEqual(0, 419 $uri->comparePath( 420 new lmbUri('http://localhost2/test.php/test') 421 ) 422 ); 423 } 424 425 function testComparePathContains() 426 { 427 $str = 'http://localhost/test.php/test'; 428 429 $uri = new lmbUri($str); 430 431 $this->assertEqual(1, 432 $uri->comparePath( 433 new lmbUri('http://localhost2/test.php') 434 ) 435 ); 436 } 437 438 function testComparePathIsContained() 439 { 440 $str = 'http://localhost/test.php/test'; 441 442 $uri = new lmbUri($str); 443 444 $this->assertEqual(-1, 445 $uri->comparePath( 446 new lmbUri('http://localhost2/test.php/test/test2') 447 ) 448 ); 449 } 450 451 function testComparePathNotEqual() 452 { 453 $str = 'http://localhost/test.php/test/test1'; 454 455 $uri = new lmbUri($str); 456 457 $this->assertIdentical(false, 458 $uri->comparePath( 459 new lmbUri('http://localhost2/test.php/test/test2') 460 ) 461 ); 462 } 463 464 function testRemoveQueryItem() 465 { 466 $str = 'http://localhost/test.php?foo=bar&bar=foo'; 467 468 $uri = new lmbUri($str); 469 470 $uri->removeQueryItem('bar'); 471 472 $this->assertEqual('foo=bar', $uri->getQueryString()); 473 $this->assertEqual('http://localhost/test.php?foo=bar', $uri->toString()); 474 } 475 476 function testRemoveQueryItems() 477 { 478 $str = 'http://localhost/test.php?foo=bar&bar=foo'; 479 480 $uri = new lmbUri($str); 481 482 $uri->removeQueryItems(); 483 484 $this->assertEqual('', $uri->getQueryString()); 485 $this->assertEqual('http://localhost/test.php', $uri->toString()); 486 } 487 488 function testIsAbsolute() 489 { 490 $str = '/test.php'; 491 492 $uri = new lmbUri($str); 493 494 $this->assertTrue($uri->isAbsolute()); 495 } 496 497 function testIsAbsoluteNoPath() 498 { 499 $str = 'http://somedomain.com'; 500 501 $uri = new lmbUri($str); 502 503 $this->assertTrue($uri->isAbsolute()); 504 } 505 506 function testIsRelative() 507 { 508 $str = '../../test.php'; 509 510 $uri = new lmbUri($str); 511 512 $this->assertTrue($uri->isRelative()); 513 } 514 515 function testSetPath() 516 { 517 $uri1 = new lmbUri('/index.html'); 518 $uri2 = new lmbUri('http://dot.com/index.html'); 519 520 $this->assertEqual($uri1->getPathElements(), $uri2->getPathElements()); 521 } 522 523 function testGetPathToLevel() 524 { 525 $uri = new lmbUri('/path/to/level'); 526 527 $this->assertEqual($uri->getPathToLevel(1), '/path'); 528 $this->assertEqual($uri->getPathToLevel(2), '/path/to'); 529 $this->assertEqual($uri->getPathToLevel(3), '/path/to/level'); 530 $this->assertEqual(