1<?php 2 3namespace Sabre\Uri; 4 5class ResolveTest extends \PHPUnit_Framework_TestCase{ 6 7 /** 8 * @dataProvider resolveData 9 */ 10 function testResolve($base, $update, $expected) { 11 12 $this->assertEquals( 13 $expected, 14 resolve($base, $update) 15 ); 16 17 } 18 19 function resolveData() { 20 21 return [ 22 [ 23 'http://example.org/foo/baz', 24 '/bar', 25 'http://example.org/bar', 26 ], 27 [ 28 'https://example.org/foo', 29 '//example.net/', 30 'https://example.net/', 31 ], 32 [ 33 'https://example.org/foo', 34 '?a=b', 35 'https://example.org/foo?a=b', 36 ], 37 [ 38 '//example.org/foo', 39 '?a=b', 40 '//example.org/foo?a=b', 41 ], 42 // Ports and fragments 43 [ 44 'https://example.org:81/foo#hey', 45 '?a=b#c=d', 46 'https://example.org:81/foo?a=b#c=d', 47 ], 48 // Relative.. in-directory paths 49 [ 50 'http://example.org/foo/bar', 51 'bar2', 52 'http://example.org/foo/bar2', 53 ], 54 // Now the base path ended with a slash 55 [ 56 'http://example.org/foo/bar/', 57 'bar2/bar3', 58 'http://example.org/foo/bar/bar2/bar3', 59 ], 60 // .. and . 61 [ 62 'http://example.org/foo/bar/', 63 '../bar2/.././/bar3/', 64 'http://example.org/foo//bar3/', 65 ], 66 // Only updating the fragment 67 [ 68 'https://example.org/foo?a=b', 69 '#comments', 70 'https://example.org/foo?a=b#comments', 71 ], 72 // Switching to mailto! 73 [ 74 'https://example.org/foo?a=b', 75 'mailto:foo@example.org', 76 'mailto:foo@example.org', 77 ], 78 // Resolving empty path 79 [ 80 'http://www.example.org', 81 '#foo', 82 'http://www.example.org/#foo', 83 ], 84 // Another fragment test 85 [ 86 'http://example.org/path.json', 87 '#', 88 'http://example.org/path.json', 89 ], 90 [ 91 'http://www.example.com', 92 '#', 93 'http://www.example.com/', 94 ] 95 ]; 96 97 } 98 99} 100