public function testChainingAssemblyWithRegex()
 {
     $chain = new RouterChainRule();
     $foo = RouterHostnameRule::create('www.example.com')->setDefaults(array('foo' => 'foo'));
     $bar = RouterRegexpRule::create('bar')->setDefaults(array('bar' => 'bar'))->setReverse('bar');
     $chain->chain($foo)->chain($bar);
     $request = $this->buildRequest('http://www.example.com/bar');
     $res = $chain->match($request);
     $this->assertInternalType('array', $res);
     $this->assertRegexp('#[^a-z0-9]?www\\.example\\.com/bar$#i', $chain->assembly());
 }
 /**
  * @return Router
  */
 protected function getRouter()
 {
     return RouterRewrite::me()->addRoute(self::DEFAULT_ROUTE_NAME, RouterRegexpRule::create(self::ROUTE_REGEXP)->setMap(array(1 => 'area', 4 => 'id', 6 => 'action', 8 => 'format'))->setDefaults(array('area' => self::DEFAULT_CONTROLLER, 'action' => self::DEFAULT_ACTION, 'id' => 0, 'format' => self::DEFAULT_FORMAT)));
 }
 public function testAssemblyOfRouteWithMergedMatchedParts()
 {
     $route = RouterRegexpRule::create('itemlist(?:/(\\d+))?')->setDefaults(array('page' => 1))->setMap(array(1 => 'page'))->setReverse('itemlist/%d');
     $this->assertEquals(array('page' => 1), $route->match($this->buildRequest('http://localhost/itemlist/')));
     $this->assertEquals('itemlist/1', $route->assembly());
     $this->assertEquals(array('page' => 2), $route->match($this->buildRequest('http://localhost/itemlist/2')));
     $this->assertEquals('itemlist/2', $route->assembly());
     $this->assertEquals('itemlist/3', $route->assembly(array('page' => 3)));
     $this->assertEquals('itemlist/1', $route->assembly(array('page' => null)));
 }
 public function testRouteWithHostnameMaskAndRegexpAndBaseUrlRuleChain()
 {
     $base = 'http://www.example.com/~user/public_html/www/';
     $request = $this->buildRequest('http://test123d.example.com/~user/public_html/www/test/123.html');
     $host = RouterHostnameRule::create(':subdomain.example.com')->setDefaults(array('module' => 'nope-bla', 'area' => 'test'))->setRequirements(array('subdomain' => '[\\da-z][\\da-z\\_]*[\\da-z]'));
     $transparent = RouterRegexpRule::create('test/(\\d+)\\.html')->setDefaults(array(1 => 345))->setMap(array(1 => 'testId'));
     $chain = new RouterChainRule();
     $chain->chain($host)->chain($transparent);
     $this->router->setBaseUrl(HttpUrl::create()->parse($base));
     $this->router->addRoute('HostnameMaskWithRegexp', $chain);
     $token = $this->router->route($request);
     $this->assertEquals(4, count($token->getAttached()));
     $this->assertEquals('test', $token->getAttachedVar('area'));
     $this->assertEquals(123, $token->getAttachedVar('testId'));
     $this->assertEquals('nope-bla', $token->getAttachedVar('module'));
     $this->assertEquals('test123d', $token->getAttachedVar('subdomain'));
 }