3 declare(strict_types=1);
     5 require_once(
"vendor/composer/vendor/autoload.php");
    12     private const URI_COMPLETE = 
'g+it://github.com:8080/someaccount/somerepo/somerepo.git?query_par_1=val_1&query_par_2=val_2#fragment';
    14     private const URI_COMPLETE_IPV4 = 
'g+it://10.0.0.86:8080/someaccount/somerepo/somerepo.git/?query_par_1=val_1&query_par_2=val_2#fragment';
    16     private const URI_COMPLETE_LOCALHOST = 
'g+it://localhost:8080/someaccount/somerepo/somerepo.git/?query_par_1=val_1&query_par_2=val_2#fragment';
    19     private const URI_NO_PATH_1 = 
'g-it://ilias%2Da.de:8080?query_par_1=val_1&query_par_2=val_2#fragment';
    20     private const URI_NO_PATH_2 = 
'g.it://amaz;on.co.uk:8080/?query_par_1=val_1&query_par_2=val_2#fragment';
    22     private const URI_NO_QUERY_1 = 
'git://one-letter-top-level.a:8080/someaccount/somerepo/somerepo.git/#fragment';
    23     private const URI_NO_QUERY_2 = 
'git://github.com:8080/someaccount/somerepo/somerepo.git#fragment';
    32     private const URI_PATH = 
'git://git$,;hub.com:8080/someacc$,;ount/somerepo/somerepo.git/';
    36     private const URI_NO_SCHEMA = 
'git$,;hub.com:8080/someacc$,;ount/somerepo/somerepo.git/';
    38     private const URI_NO_AUTHORITY = 
'git://:8080/someaccount/somerepo/somerepo.git/?query_par_1=val_1&query_par_2=val_2#fragment';
    46     private const URI_INVALID = 
'https://host.de/ilias.php/"><script>alert(1)</script>?baseClass=ilObjChatroomGUI&cmd=getOSDNotifications&cmdMode=asynch&max_age=15192913';
    48     private const URI_FAKEPCENC = 
'g+it://github.com:8080/someaccoun%t/somerepo/somerepo.git/?query_par_1=val_1&query_par_2=val_2#fragment';
    50     private const URI_REALPCTENC = 
'g+it://github.com:8080/someaccount%2Fsomerepo/som%2brepo.git/?par_lower=val_%2b&par_upper=val_%C3%A1#fragment';
    53         'par_lower' => 
'val_+',
    54         'par_upper' => 
'val_รก'    63     private const URI_BASE = 
'git://github.com:8080/someaccount/somerepo/somerepo.git';
    84         $this->assertEquals(
'g+it', $uri->getSchema());
    85         $this->assertEquals(
'10.0.0.86:8080', $uri->getAuthority());
    86         $this->assertEquals(
'10.0.0.86', $uri->getHost());
    87         $this->assertEquals(8080, $uri->getPort());
    88         $this->assertEquals(
'someaccount/somerepo/somerepo.git', $uri->getPath());
    89         $this->assertEquals(
'query_par_1=val_1&query_par_2=val_2', $uri->getQuery());
    90         $this->assertEquals(
'fragment', $uri->getFragment());
   100         $this->assertEquals(
'http', $uri->getSchema());
   101         $this->assertEquals($host, $uri->getAuthority());
   102         $this->assertEquals($host, $uri->getHost());
   103         $this->assertEquals(null, $uri->getPort());
   104         $this->assertEquals(null, $uri->getPath());
   105         $this->assertEquals(null, $uri->getQuery());
   106         $this->assertEquals(null, $uri->getFragment());
   113             [
'[1234:5678:9ABC:DEF0:1234:5678:9ABC:DEF0]'],
   114             [
'[1:2:3:4:5:6:7:8]'],
   124             [
'[1234:5678:9ABC:DEF0:1234:5678:123.123.123.123]'],
   126             [
'[::123.123.123.123]'],
   127             [
'[1::123.123.123.123]'],
   128             [
'[1:3:4::123.123.123.123]'],
   129             [
'[::f:a:123.123.123.123]'],
   139         $this->assertEquals(
'g+it', $uri->getSchema());
   140         $this->assertEquals(
'localhost:8080', $uri->getAuthority());
   141         $this->assertEquals(
'localhost', $uri->getHost());
   142         $this->assertEquals(8080, $uri->getPort());
   143         $this->assertEquals(
'someaccount/somerepo/somerepo.git', $uri->getPath());
   144         $this->assertEquals(
'query_par_1=val_1&query_par_2=val_2', $uri->getQuery());
   145         $this->assertEquals(
'fragment', $uri->getFragment());
   154         $this->assertEquals(
'g+it', $uri->getSchema());
   155         $this->assertEquals(
'github.com:8080', $uri->getAuthority());
   156         $this->assertEquals(
'github.com', $uri->getHost());
   157         $this->assertEquals(
'8080', $uri->getPort());
   158         $this->assertEquals(
'someaccount/somerepo/somerepo.git', $uri->getPath());
   159         $this->assertEquals(
'query_par_1=val_1&query_par_2=val_2', $uri->getQuery());
   160         $this->assertEquals(
'fragment', $uri->getFragment());
   168         $this->assertEquals(
'g+it://github.com:8080/someaccount/somerepo/somerepo.git', $uri->getBaseURI());
   176         $base_uri = $uri->getBaseURI();
   177         $this->assertEquals(
'g+it://github.com:8080/someaccount/somerepo/somerepo.git', $base_uri);
   178         $this->assertEquals(
'g+it', $uri->getSchema());
   179         $this->assertEquals(
'github.com:8080', $uri->getAuthority());
   180         $this->assertEquals(
'github.com', $uri->getHost());
   181         $this->assertEquals(
'8080', $uri->getPort());
   182         $this->assertEquals(
'someaccount/somerepo/somerepo.git', $uri->getPath());
   183         $this->assertEquals(
'query_par_1=val_1&query_par_2=val_2', $uri->getQuery());
   184         $this->assertEquals(
'fragment', $uri->getFragment());
   187         $this->assertEquals($base_uri, $uri->getBaseURI());
   188         $this->assertEquals(
'g+it', $uri->getSchema());
   189         $this->assertEquals(
'github.com:8080', $uri->getAuthority());
   190         $this->assertEquals(
'github.com', $uri->getHost());
   191         $this->assertEquals(
'8080', $uri->getPort());
   192         $this->assertEquals(
'someaccount/somerepo/somerepo.git', $uri->getPath());
   193         $this->assertNull($uri->getQuery());
   194         $this->assertNull($uri->getFragment());
   204         $this->assertEquals(
'g-it', $uri->getSchema());
   205         $this->assertEquals(
'ilias%2Da.de:8080', $uri->getAuthority());
   206         $this->assertEquals(
'ilias%2Da.de', $uri->getHost());
   207         $this->assertEquals(
'8080', $uri->getPort());
   208         $this->assertNull($uri->getPath());
   209         $this->assertEquals(
'query_par_1=val_1&query_par_2=val_2', $uri->getQuery());
   210         $this->assertEquals(
'fragment', $uri->getFragment());
   213         $this->assertEquals(
'g.it', $uri->getSchema());
   214         $this->assertEquals(
'amaz;on.co.uk:8080', $uri->getAuthority());
   215         $this->assertEquals(
'amaz;on.co.uk', $uri->getHost());
   216         $this->assertEquals(
'8080', $uri->getPort());
   217         $this->assertNull($uri->getPath());
   218         $this->assertEquals(
'query_par_1=val_1&query_par_2=val_2', $uri->getQuery());
   219         $this->assertEquals(
'fragment', $uri->getFragment());
   228         $this->assertEquals(
'git', $uri->getSchema());
   229         $this->assertEquals(
'one-letter-top-level.a:8080', $uri->getAuthority());
   230         $this->assertEquals(
'one-letter-top-level.a', $uri->getHost());
   231         $this->assertEquals(
'8080', $uri->getPort());
   232         $this->assertEquals(
'someaccount/somerepo/somerepo.git', $uri->getPath());
   233         $this->assertNull($uri->getQuery());
   234         $this->assertEquals(
'fragment', $uri->getFragment());
   237         $this->assertEquals(
'git', $uri->getSchema());
   238         $this->assertEquals(
'github.com:8080', $uri->getAuthority());
   239         $this->assertEquals(
'github.com', $uri->getHost());
   240         $this->assertEquals(
'8080', $uri->getPort());
   241         $this->assertEquals(
'someaccount/somerepo/somerepo.git', $uri->getPath());
   242         $this->assertNull($uri->getQuery());
   243         $this->assertEquals(
'fragment', $uri->getFragment());
   252         $this->assertEquals(
'git', $uri->getSchema());
   253         $this->assertEquals(
'github.com', $uri->getAuthority());
   254         $this->assertEquals(
'github.com', $uri->getHost());
   255         $this->assertNull($uri->getPort());
   256         $this->assertNull($uri->getPath());
   257         $this->assertEquals(
'query_p$,;:A!\'*+()ar_1=val_1&quer?y_par_2=val_2', $uri->getQuery());
   258         $this->assertNull($uri->getFragment());
   261         $this->assertEquals(
'git', $uri->getSchema());
   262         $this->assertEquals(
'github.com', $uri->getAuthority());
   263         $this->assertEquals(
'github.com', $uri->getHost());
   264         $this->assertNull($uri->getPort());
   265         $this->assertNull($uri->getPath());
   266         $this->assertEquals(
'qu/ery_p$,;:A!\'*+()ar_1=val_1&quer?y_par_2=val_2', $uri->getQuery());
   267         $this->assertNull($uri->getFragment());
   276         $this->assertEquals(
'git', $uri->getSchema());
   277         $this->assertEquals(
'github.com:8080', $uri->getAuthority());
   278         $this->assertEquals(
'github.com', $uri->getHost());
   279         $this->assertEquals(
'8080', $uri->getPort());
   280         $this->assertNull($uri->getPath());
   281         $this->assertNull($uri->getQuery());
   282         $this->assertEquals(
'fragment$,;:A!\'*+()ar_1=val_1&', $uri->getFragment());
   290         $this->assertEquals(
'git', $uri->getSchema());
   291         $this->assertEquals(
'git$,;hub.com:8080', $uri->getAuthority());
   292         $this->assertEquals(
'git$,;hub.com', $uri->getHost());
   293         $this->assertEquals(
'8080', $uri->getPort());
   294         $this->assertEquals(
'someacc$,;ount/somerepo/somerepo.git', $uri->getPath());
   295         $this->assertNull($uri->getQuery());
   296         $this->assertEquals(
'frag:A!\'*+()arment', $uri->getFragment());
   305         $this->assertEquals(
'git', $uri->getSchema());
   306         $this->assertEquals(
'git$,;hub.com:8080', $uri->getAuthority());
   307         $this->assertEquals(
'git$,;hub.com', $uri->getHost());
   308         $this->assertEquals(
'8080', $uri->getPort());
   309         $this->assertEquals(
'someacc$,;ount/somerepo/somerepo.git', $uri->getPath());
   310         $this->assertNull($uri->getQuery());
   311         $this->assertNull($uri->getFragment());
   312         $this->assertEquals(
'git://git$,;hub.com:8080/someacc$,;ount/somerepo/somerepo.git', $uri->getBaseURI());
   321         $this->assertEquals(
'git', $uri->getSchema());
   322         $this->assertEquals(
'git$,;hub.com', $uri->getAuthority());
   323         $this->assertEquals(
'git$,;hub.com', $uri->getHost());
   324         $this->assertNull($uri->getPort());
   325         $this->assertNull($uri->getPath());
   326         $this->assertNull($uri->getQuery());
   327         $this->assertNull($uri->getFragment());
   328         $this->assertEquals(
'git://git$,;hub.com', $uri->getBaseURI());
   336         $this->expectException(TypeError::class);
   345         $this->expectException(TypeError::class);
   354         $this->expectException(TypeError::class);
   363         $this->expectException(InvalidArgumentException::class);
   372         $this->expectException(InvalidArgumentException::class);
   381         $this->expectException(InvalidArgumentException::class);
   391         $this->assertEquals(self::PATH_REALPCTENC, $uri->getPath());
   392         $this->assertEquals(self::PARAMS_REALPCTENC, $uri->getParameters());
   400         $this->expectException(InvalidArgumentException::class);
   409         $this->expectException(InvalidArgumentException::class);
   418         $this->expectException(InvalidArgumentException::class);
   427         $this->expectException(InvalidArgumentException::class);
   436         $this->expectException(InvalidArgumentException::class);
   445         $this->expectException(InvalidArgumentException::class);
   454         $this->assertEquals(
'g+it', $uri->getSchema());
   455         $this->assertEquals(
'github.com:8080', $uri->getAuthority());
   456         $this->assertEquals(
'github.com', $uri->getHost());
   457         $this->assertEquals(
'8080', $uri->getPort());
   458         $this->assertEquals(
'someaccount/somerepo/somerepo.git', $uri->getPath());
   459         $this->assertEquals(
'query_par_1=val_1&query_par_2=val_2', $uri->getQuery());
   460         $this->assertEquals(
'fragment', $uri->getFragment());
   461         $uri = $uri->withSchema(
'http');
   462         $this->assertEquals(
'http', $uri->getSchema());
   463         $this->assertEquals(
'github.com:8080', $uri->getAuthority());
   464         $this->assertEquals(
'github.com', $uri->getHost());
   465         $this->assertEquals(
'8080', $uri->getPort());
   466         $this->assertEquals(
'someaccount/somerepo/somerepo.git', $uri->getPath());
   467         $this->assertEquals(
'query_par_1=val_1&query_par_2=val_2', $uri->getQuery());
   468         $this->assertEquals(
'fragment', $uri->getFragment());
   476         $this->expectException(InvalidArgumentException::class);
   478         $uri->withSchema(
'');
   486         $this->expectException(InvalidArgumentException::class);
   488         $uri->withSchema(
'1aa');
   496         $this->assertEquals(
'g+it', $uri->getSchema());
   497         $this->assertEquals(
'github.com:8080', $uri->getAuthority());
   498         $this->assertEquals(
'github.com', $uri->getHost());
   499         $this->assertEquals(
'8080', $uri->getPort());
   500         $this->assertEquals(
'someaccount/somerepo/somerepo.git', $uri->getPath());
   501         $this->assertEquals(
'query_par_1=val_1&query_par_2=val_2', $uri->getQuery());
   502         $this->assertEquals(
'fragment', $uri->getFragment());
   503         $uri = $uri->withPort(80);
   504         $this->assertEquals(
'g+it', $uri->getSchema());
   505         $this->assertEquals(
'github.com:80', $uri->getAuthority());
   506         $this->assertEquals(
'github.com', $uri->getHost());
   507         $this->assertEquals(
'80', $uri->getPort());
   508         $this->assertEquals(
'someaccount/somerepo/somerepo.git', $uri->getPath());
   509         $this->assertEquals(
'query_par_1=val_1&query_par_2=val_2', $uri->getQuery());
   510         $this->assertEquals(
'fragment', $uri->getFragment());
   511         $uri = $uri->withPort();
   512         $this->assertEquals(
'g+it', $uri->getSchema());
   513         $this->assertEquals(
'github.com', $uri->getAuthority());
   514         $this->assertEquals(
'github.com', $uri->getHost());
   515         $this->assertNull($uri->getPort());
   516         $this->assertEquals(
'someaccount/somerepo/somerepo.git', $uri->getPath());
   517         $this->assertEquals(
'query_par_1=val_1&query_par_2=val_2', $uri->getQuery());
   518         $this->assertEquals(
'fragment', $uri->getFragment());
   527         $this->expectException(TypeError::class);
   529         $uri->withPort(
'a111');
   537         $this->expectException(TypeError::class);
   539         $uri->withPort(
'foo');
   547         $this->assertEquals(
'g+it', $uri->getSchema());
   548         $this->assertEquals(
'github.com:8080', $uri->getAuthority());
   549         $this->assertEquals(
'github.com', $uri->getHost());
   550         $this->assertEquals(
'8080', $uri->getPort());
   551         $this->assertEquals(
'someaccount/somerepo/somerepo.git', $uri->getPath());
   552         $this->assertEquals(
'query_par_1=val_1&query_par_2=val_2', $uri->getQuery());
   553         $this->assertEquals(
'fragment', $uri->getFragment());
   554         $uri = $uri->withHost(
'ilias.de');
   555         $this->assertEquals(
'g+it', $uri->getSchema());
   556         $this->assertEquals(
'ilias.de:8080', $uri->getAuthority());
   557         $this->assertEquals(
'ilias.de', $uri->getHost());
   558         $this->assertEquals(
'8080', $uri->getPort());
   559         $this->assertEquals(
'someaccount/somerepo/somerepo.git', $uri->getPath());
   560         $this->assertEquals(
'query_par_1=val_1&query_par_2=val_2', $uri->getQuery());
   561         $this->assertEquals(
'fragment', $uri->getFragment());
   570         $this->expectException(InvalidArgumentException::class);
   572         $uri->withHost(
'-foo-.de');
   580         $this->expectException(InvalidArgumentException::class);
   590         $this->expectException(InvalidArgumentException::class);
   592         $uri->withHost(
'ilias.de"><script');
   600         $this->assertEquals(
'g+it', $uri->getSchema());
   601         $this->assertEquals(
'github.com:8080', $uri->getAuthority());
   602         $this->assertEquals(
'github.com', $uri->getHost());
   603         $this->assertEquals(
'8080', $uri->getPort());
   604         $this->assertEquals(
'someaccount/somerepo/somerepo.git', $uri->getPath());
   605         $this->assertEquals(
'query_par_1=val_1&query_par_2=val_2', $uri->getQuery());
   606         $this->assertEquals(
'fragment', $uri->getFragment());
   607         $uri = $uri->withAuthority(
'www1.ilias.de');
   608         $this->assertEquals(
'g+it', $uri->getSchema());
   609         $this->assertEquals(
'www1.ilias.de', $uri->getAuthority());
   610         $this->assertEquals(
'www1.ilias.de', $uri->getHost());
   611         $this->assertNull($uri->getPort());
   612         $this->assertEquals(
'someaccount/somerepo/somerepo.git', $uri->getPath());
   613         $this->assertEquals(
'query_par_1=val_1&query_par_2=val_2', $uri->getQuery());
   614         $this->assertEquals(
'fragment', $uri->getFragment());
   615         $uri = $uri->withAuthority(
'ilias.de:80');
   616         $this->assertEquals(
'g+it', $uri->getSchema());
   617         $this->assertEquals(
'ilias.de:80', $uri->getAuthority());
   618         $this->assertEquals(
'ilias.de', $uri->getHost());
   619         $this->assertEquals(
'80', $uri->getPort());
   620         $this->assertEquals(
'someaccount/somerepo/somerepo.git', $uri->getPath());
   621         $this->assertEquals(
'query_par_1=val_1&query_par_2=val_2', $uri->getQuery());
   622         $this->assertEquals(
'fragment', $uri->getFragment());
   623         $uri = $uri->withAuthority(
'a:1');
   624         $this->assertEquals(
'g+it', $uri->getSchema());
   625         $this->assertEquals(
'a:1', $uri->getAuthority());
   626         $this->assertEquals(
'a', $uri->getHost());
   627         $this->assertEquals(1, $uri->getPort());
   628         $this->assertEquals(
'someaccount/somerepo/somerepo.git', $uri->getPath());
   629         $this->assertEquals(
'query_par_1=val_1&query_par_2=val_2', $uri->getQuery());
   630         $this->assertEquals(
'fragment', $uri->getFragment());
   631         $uri = $uri->withAuthority(
'a');
   632         $this->assertEquals(
'g+it', $uri->getSchema());
   633         $this->assertEquals(
'a', $uri->getAuthority());
   634         $this->assertEquals(
'a', $uri->getHost());
   635         $this->assertNull($uri->getPort());
   636         $this->assertEquals(
'someaccount/somerepo/somerepo.git', $uri->getPath());
   637         $this->assertEquals(
'query_par_1=val_1&query_par_2=val_2', $uri->getQuery());
   638         $this->assertEquals(
'fragment', $uri->getFragment());
   639         $uri = $uri->withAuthority(
'1.2.3.4');
   640         $this->assertEquals(
'g+it', $uri->getSchema());
   641         $this->assertEquals(
'1.2.3.4', $uri->getAuthority());
   642         $this->assertEquals(
'1.2.3.4', $uri->getHost());
   643         $this->assertNull($uri->getPort());
   644         $this->assertEquals(
'someaccount/somerepo/somerepo.git', $uri->getPath());
   645         $this->assertEquals(
'query_par_1=val_1&query_par_2=val_2', $uri->getQuery());
   646         $this->assertEquals(
'fragment', $uri->getFragment());
   647         $uri = $uri->withAuthority(
'1.2.3.4:5');
   648         $this->assertEquals(
'g+it', $uri->getSchema());
   649         $this->assertEquals(
'1.2.3.4:5', $uri->getAuthority());
   650         $this->assertEquals(
'1.2.3.4', $uri->getHost());
   651         $this->assertEquals(5, $uri->getPort());
   652         $this->assertEquals(
'someaccount/somerepo/somerepo.git', $uri->getPath());
   653         $this->assertEquals(
'query_par_1=val_1&query_par_2=val_2', $uri->getQuery());
   654         $this->assertEquals(
'fragment', $uri->getFragment());
   655         $uri = $uri->withAuthority(
'localhost1');
   656         $this->assertEquals(
'g+it', $uri->getSchema());
   657         $this->assertEquals(
'localhost1', $uri->getAuthority());
   658         $this->assertEquals(
'localhost1', $uri->getHost());
   659         $this->assertNull($uri->getPort());
   660         $this->assertEquals(
'someaccount/somerepo/somerepo.git', $uri->getPath());
   661         $this->assertEquals(
'query_par_1=val_1&query_par_2=val_2', $uri->getQuery());
   662         $this->assertEquals(
'fragment', $uri->getFragment());
   663         $uri = $uri->withAuthority(
'localhost1:10');
   664         $this->assertEquals(
'g+it', $uri->getSchema());
   665         $this->assertEquals(
'localhost1:10', $uri->getAuthority());
   666         $this->assertEquals(
'localhost1', $uri->getHost());
   667         $this->assertEquals(10, $uri->getPort());
   668         $this->assertEquals(
'someaccount/somerepo/somerepo.git', $uri->getPath());
   669         $this->assertEquals(
'query_par_1=val_1&query_par_2=val_2', $uri->getQuery());
   670         $this->assertEquals(
'fragment', $uri->getFragment());
   678         $this->expectException(InvalidArgumentException::class);
   680         $uri->withAuthority(
'-foo-.de');
   688         $this->expectException(InvalidArgumentException::class);
   690         $uri->withAuthority(
'-bar-.de:6060');
   699         $this->expectException(InvalidArgumentException::class);
   701         $uri->withHost(
'ilias.de:');
   709         $this->expectException(InvalidArgumentException::class);
   711         $uri->withHost(
'ilias.de: ');
   719         $this->expectException(InvalidArgumentException::class);
   721         $uri->withHost(
'ilias.de:aaa');
   729         $this->expectException(InvalidArgumentException::class);
   731         $uri->withAuthority(
'foo.de&<script>');
   740         $this->expectException(InvalidArgumentException::class);
   742         $uri->withAuthority(
'foo.de"><script>alert');
   751         $this->expectException(InvalidArgumentException::class);
   753         $uri->withAuthority(
'   :80');
   761         $this->assertEquals(
'g+it', $uri->getSchema());
   762         $this->assertEquals(
'github.com:8080', $uri->getAuthority());
   763         $this->assertEquals(
'github.com', $uri->getHost());
   764         $this->assertEquals(
'8080', $uri->getPort());
   765         $this->assertEquals(
'someaccount/somerepo/somerepo.git', $uri->getPath());
   766         $this->assertEquals(
'query_par_1=val_1&query_par_2=val_2', $uri->getQuery());
   767         $this->assertEquals(
'fragment', $uri->getFragment());
   768         $uri = $uri->withPath(
'a/b');
   769         $this->assertEquals(
'g+it', $uri->getSchema());
   770         $this->assertEquals(
'github.com:8080', $uri->getAuthority());
   771         $this->assertEquals(
'github.com', $uri->getHost());
   772         $this->assertEquals(
'8080', $uri->getPort());
   773         $this->assertEquals(
'a/b', $uri->getPath());
   774         $this->assertEquals(
'query_par_1=val_1&query_par_2=val_2', $uri->getQuery());
   775         $this->assertEquals(
'fragment', $uri->getFragment());
   776         $uri = $uri->withPath();
   777         $this->assertEquals(
'g+it', $uri->getSchema());
   778         $this->assertEquals(
'github.com:8080', $uri->getAuthority());
   779         $this->assertEquals(
'github.com', $uri->getHost());
   780         $this->assertEquals(
'8080', $uri->getPort());
   781         $this->assertNull($uri->getPath());
   782         $this->assertEquals(
'query_par_1=val_1&query_par_2=val_2', $uri->getQuery());
   783         $this->assertEquals(
'fragment', $uri->getFragment());
   791         $this->expectException(InvalidArgumentException::class);
   793         $uri->withPath(
'/<script>/a');
   801         $this->expectException(InvalidArgumentException::class);
   803         $uri->withPath(
'//a/b');
   811         $this->expectException(InvalidArgumentException::class);
   813         $uri->withPath(
':a/b');
   821         $this->assertEquals(
'g+it', $uri->getSchema());
   822         $this->assertEquals(
'github.com:8080', $uri->getAuthority());
   823         $this->assertEquals(
'github.com', $uri->getHost());
   824         $this->assertEquals(
'8080', $uri->getPort());
   825         $this->assertEquals(
'someaccount/somerepo/somerepo.git', $uri->getPath());
   826         $this->assertEquals(
'query_par_1=val_1&query_par_2=val_2', $uri->getQuery());
   827         $this->assertEquals(
'fragment', $uri->getFragment());
   828         $uri = $uri->withQuery(
'query_par_a1=val_a1');
   829         $this->assertEquals(
'g+it', $uri->getSchema());
   830         $this->assertEquals(
'github.com:8080', $uri->getAuthority());
   831         $this->assertEquals(
'github.com', $uri->getHost());
   832         $this->assertEquals(
'8080', $uri->getPort());
   833         $this->assertEquals(
'someaccount/somerepo/somerepo.git', $uri->getPath());
   834         $this->assertEquals(
'query_par_a1=val_a1', $uri->getQuery());
   835         $this->assertEquals(
'fragment', $uri->getFragment());
   836         $uri = $uri->withQuery();
   837         $this->assertEquals(
'g+it', $uri->getSchema());
   838         $this->assertEquals(
'github.com:8080', $uri->getAuthority());
   839         $this->assertEquals(
'github.com', $uri->getHost());
   840         $this->assertEquals(
'8080', $uri->getPort());
   841         $this->assertEquals(
'someaccount/somerepo/somerepo.git', $uri->getPath());
   842         $this->assertNull($uri->getQuery());
   843         $this->assertEquals(
'fragment', $uri->getFragment());
   851         $this->expectException(InvalidArgumentException::class);
   853         $uri->withQuery(
'<script>a');
   861         $this->expectException(InvalidArgumentException::class);
   863         $uri->withQuery(
'aa[]');
   871         $this->assertEquals(
'g+it', $uri->getSchema());
   872         $this->assertEquals(
'github.com:8080', $uri->getAuthority());
   873         $this->assertEquals(
'github.com', $uri->getHost());
   874         $this->assertEquals(
'8080', $uri->getPort());
   875         $this->assertEquals(
'someaccount/somerepo/somerepo.git', $uri->getPath());
   876         $this->assertEquals(
'query_par_1=val_1&query_par_2=val_2', $uri->getQuery());
   877         $this->assertEquals(
'fragment', $uri->getFragment());
   878         $uri = $uri->withFragment(
'someFragment');
   879         $this->assertEquals(
'g+it', $uri->getSchema());
   880         $this->assertEquals(
'github.com:8080', $uri->getAuthority());
   881         $this->assertEquals(
'github.com', $uri->getHost());
   882         $this->assertEquals(
'8080', $uri->getPort());
   883         $this->assertEquals(
'someaccount/somerepo/somerepo.git', $uri->getPath());
   884         $this->assertEquals(
'query_par_1=val_1&query_par_2=val_2', $uri->getQuery());
   885         $this->assertEquals(
'someFragment', $uri->getFragment());
   886         $uri = $uri->withFragment();
   887         $this->assertEquals(
'g+it', $uri->getSchema());
   888         $this->assertEquals(
'github.com:8080', $uri->getAuthority());
   889         $this->assertEquals(
'github.com', $uri->getHost());
   890         $this->assertEquals(
'8080', $uri->getPort());
   891         $this->assertEquals(
'someaccount/somerepo/somerepo.git', $uri->getPath());
   892         $this->assertEquals(
'query_par_1=val_1&query_par_2=val_2', $uri->getQuery());
   893         $this->assertNull($uri->getFragment());
   901         $this->expectException(InvalidArgumentException::class);
   903         $uri->withFragment(
'aaa[]');
   911         $this->expectException(InvalidArgumentException::class);
   913         $uri->withFragment(
'script>');
   927         $url = self::URI_BASE . 
'?' . http_build_query(self::PARAMS);
   931             $uri->getParameters()
   941         $k = array_keys(self::PARAMS)[0];
   944             $uri->getParameter($k)
   953         $params = [
'x' => 1, 
'y' => 2];
   954         $uri = $uri->withParameters(
$params);
   957             $uri->getParameters()
   967         $uri = $uri->withParameter(
'x', 5);
   970             $uri->getParameter(
'x')
   982         $uri = $uri->withParameter(
'z', 5);
   985             $uri->getParameters()
   994         $params = [
'x' => 1, 
'y' => [10, 11, 12]];
   995         $uri = $uri->withParameters(
$params);
   998             $uri->getParameters()
  1000         $this->assertEquals(
  1001             'git://github.com:8080/someaccount/somerepo/somerepo.git?x=1&y%5B0%5D=10&y%5B1%5D=11&y%5B2%5D=12',
  1004         $this->assertEquals(
  1006             $uri->getParameter(
'y')
  1013         $this->assertEquals(
  1015             $uri->getParameters()
  1018         $this->assertNull($uri->getParameter(
'y'));
  1020         $this->assertEquals(
  1021             self::URI_NO_QUERY_2,
 test_with_authority_invalid_3()
test_with_authority 
 
testWithArrayParameters(ILIAS\Data\URI $uri)
testGetParameters 
 
const URI_HOST_ALPHADIG_START_2
 
test_with_path_invalid_3()
test_with_path 
 
test_alphadigit_start_host_5()
test_init 
 
const URI_COMPLETE_LOCALHOST
 
test_base_uri_idempotent($uri)
test_init 
 
const URI_HOST_ALPHADIG_START_3
 
const const URI_HOST_ALPHADIG_START_1
 
test_with_authority_invalid_7()
test_with_authority 
 
test_with_authority_invalid_6()
test_with_authority 
 
test_authority_only()
test_init 
 
test_wrong_authority_in_schema_1()
test_init 
 
test_with_authority_invalid_4()
test_with_authority 
 
test_with_path_invalid_2()
test_with_path 
 
test_with_fragment($uri)
test_init 
 
test_realpctenc()
test_init 
 
test_with_authority_invalid_2()
test_with_authority 
 
test_with_host_invalid_4()
test_with_host 
 
if(! $DIC->user() ->getId()||!ilLTIConsumerAccess::hasCustomProviderCreationAccess()) $params
 
test_alphadigit_start_host_4()
test_init 
 
test_fakepcenc()
test_init 
 
const URI_AUTHORITY_AND_FRAGMENT
 
Interface Observer  Contains several chained tasks and infos about them. 
 
const URI_HOST_ALPHADIG_START_5
 
test_with_authority_invalid_1()
test_with_authority 
 
testAppendParameter(ILIAS\Data\URI $uri)
testWithParameters 
 
test_no_authority()
test_init 
 
static provideIPv6addresses()
 
testGetParameter(ILIAS\Data\URI $uri)
testGetParameters 
 
test_with_host_invalid_1()
test_with_host 
 
test_with_schema($uri)
test_init 
 
test_wrong_char_in_schema()
test_init 
 
test_with_query_invalid_1()
test_with_query 
 
const URI_WRONG_AUTHORITY_1
 
testIPv6(string $host)
test_init  provideIPv6addresses 
 
test_with_fragment_invalid_1()
test_with_fragment 
 
test_with_query_invalid_2()
test_with_query 
 
test_with_fragment_invalid_2()
test_with_fragment 
 
testWithParameters(ILIAS\Data\URI $uri)
testGetParameters 
 
const URI_HOST_ALPHADIG_START_4
 
test_with_port_invalid_1()
test_with_port 
 
test_with_host_invalid_3()
test_with_host 
 
The scope of this class is split ilias-conform URI's into components. 
 
test_with_query($uri)
test_init 
 
test_with_authority_invalid_8()
test_with_authority 
 
test_authority_path_fragment()
test_init 
 
test_base_uri($uri)
test_init 
 
test_with_host($uri)
test_init 
 
test_with_path($uri)
test_init 
 
test_authority_and_query()
test_init 
 
const URI_AUTHORITY_AND_QUERY_2
 
test_with_port($uri)
test_init 
 
testSubstituteParameter(ILIAS\Data\URI $uri)
testWithParameters 
 
test_with_authority($uri)
test_init 
 
test_alphadigit_start_host_3()
test_init 
 
test_alphadigit_start_host_2()
test_init 
 
test_with_authority_invalid_5()
test_with_authority 
 
test_no_schema()
test_init 
 
test_localhost()
test_init 
 
test_with_schema_invalid_1()
test_with_schema 
 
test_uri_invalid()
test_init 
 
test_components($uri)
test_init 
 
test_with_port_invalid_2()
test_with_port 
 
test_authority_and_fragment()
test_init 
 
const URI_AUTHORITY_PATH_FRAGMENT
 
test_wrong_authority_in_schema_2()
test_init 
 
const URI_AUTHORITY_AND_QUERY_1
 
test_alphadigit_start_host()
test_init 
 
test_with_path_invalid_1()
test_with_path 
 
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
 
test_with_schema_invalid_2()
test_with_schema 
 
const URI_WRONG_AUTHORITY_2