function testGenerateAdvanced() { $route = new Route('/users/{id}/{action}', ''); $route->setRequirement('id', '\\d+'); $generator = new Generator(RequestContext::create()); $this->assertEquals('http://localhost/users/100/edit', $generator->generate($route, ['id' => 100, 'action' => 'edit'])); }
function testSchemes() { $routes = new RouteCollection(); $route = new Route('/foo/{id}/bar/{name}', ''); $route->setSchemes(['https']); $routes->add($route); $context = RequestContext::create(); $context->setScheme('https'); $this->assertEquals(['https'], $route->getSchemes()); $this->assertEquals('https', $context->getScheme()); $matcher = new Matcher($context); $this->assertEquals($route, $matcher->match('/foo/100/bar/steven', $routes)); $context->setScheme('http'); $this->setExpectedExceptionRegExp('Slince\\Routing\\Exception\\RouteNotFoundException'); $matcher->match('/foo/100/bar/steven', $routes); }
function testCompile() { $route = new Route('/users/{id}/{action}', ''); $this->assertFalse($route->isCompiled()); $route->compile(); $this->assertTrue($route->isCompiled()); $this->assertEquals('#^/users/(?P<id>.+)/(?P<action>.+)$#i', $route->getPathRegex()); $this->assertEquals(['id', 'action'], $route->getVariables()); $route->setHost('{mainDomain}.domain.com'); $route->compile(true); $this->assertTrue($route->isCompiled()); $this->assertEquals('#^/users/(?P<id>.+)/(?P<action>.+)$#i', $route->getPathRegex()); $this->assertEquals('#^(?P<mainDomain>.+).domain.com$#i', $route->getHostRegex()); }