예제 #1
0
 /**
  * Test the getters and setters with unicode (UTF-8) arguments.
  *
  */
 public function testUnicodeGettersAndSetters()
 {
     $queryArray = array('wört' => 'schlossbrücker', 'café' => 'sûr=!', '←ĊÃÂşŝőÐΞφ❡⠿' => '㈱グカ゚ㄤㄦㄜㄠ', 'a̢̱̠̼̐͊͋͗ͤ͑͘͝͡' => 'b̜̭̞̱̲̰̋̌̿͘');
     $queryAsString = 'wört=schlossbrücker&café=sûr=!&←ĊÃÂşŝőÐΞφ❡⠿=㈱グカ゚ㄤㄦㄜㄠ&a̢̱̠̼̐͊͋͗ͤ͑͘͝͡=b̜̭̞̱̲̰̋̌̿͘';
     $path = 'b̜̭̞̱̲̰̋̌̿͘/őÐΞφ/㈱グカ゚ㄤ/café';
     $fragment = 'jdf̸̪̫̫̮͐̽̓͂dЄӦӥӢՊ';
     $uri = new HTTPURI('https', 'example.net', $path, $queryArray, $fragment);
     $this->assertEquals('https', $uri->getScheme());
     $this->assertEquals('example.net', $uri->getAuthority());
     $this->assertEquals('/' . $path, $uri->getPath());
     $this->assertEquals($queryArray, $uri->getQueryAsArray());
     $this->assertEquals($queryAsString, urldecode($uri->getQueryAsString()));
     $fullURI = urldecode($uri->get());
     $this->assertEquals($fullURI, "https://example.net/{$path}?{$queryAsString}#{$fragment}");
     $uri->setPath('グカ゚café/ŝőa̢̱̠̼̐͊͋͗ͤ͑͘͝͡ÐΞ/←ĊÃ/');
     $uri->setQuery(array('1' => 'jdf̸̪̫̫̮͐̽̓͂dЄӦӥӢ'));
     $uri->setFragment('schlossbrücker');
     $this->assertEquals('/グカ゚café/ŝőa̢̱̠̼̐͊͋͗ͤ͑͘͝͡ÐΞ/←ĊÃ/', $uri->getPath());
     $this->assertEquals(array('1' => 'jdf̸̪̫̫̮͐̽̓͂dЄӦӥӢ'), $uri->getQueryAsArray());
     $this->assertEquals('1=jdf̸̪̫̫̮͐̽̓͂dЄӦӥӢ', urldecode($uri->getQueryAsString()));
     $this->assertEquals('schlossbrücker', $uri->getFragment());
     $uri->setPath('/%E3%82%B0%E3%82%AB%E3%82%9Acaf%C3%A9/%E2%86%90%C4%8A%C3%83/', FALSE);
     $uri->setFragment('f%C3%A4hrrader', FALSE);
     $this->assertEquals('/グカ゚café/←ĊÃ/', $uri->getPath());
     $this->assertEquals('fährrader', $uri->getFragment());
 }