public function testConstraints() { // a route that matches a numeric argument only $r = new Route('/{gamma}', 'alpha/beta'); $r->constrain('gamma', '[0-9]+'); $this->assertFalse($r->match('/delta')); $this->assertTrue($r->match('/1234')); // a route that matches a partial string $r = new Route('/{gamma}', 'alpha/beta'); $r->constrain('gamma', '.+elt.+'); $this->assertFalse($r->match('/dellta')); $this->assertTrue($r->match('/delta')); // a route with multiple constraints $r = new Route('/{gamma}/import/{epsilon}', 'alpha/beta'); $r->constrain('gamma', '[0-9]+')->constrain('epsilon', 'mu|nu'); $this->assertFalse($r->match('/alpha/import/mu')); $this->assertFalse($r->match('/alpha/12/nu')); $this->assertFalse($r->match('/12/beta/nu')); $this->assertTrue($r->match('/12/import/nu')); $this->assertTrue($r->match('/0/import/mu')); }
public function testRouteUriAndDestination() { $_SERVER['PATH_INFO'] = '/project/22'; $route1 = new Route('project/22', 'projects/details'); $route1->match('project/22'); $request = new Request(new Env(), $route1); $this->assertEquals('/project/22', $request->uri()); $this->assertEquals('projects/details', $request->destination()); $_SERVER['PATH_INFO'] = '/login'; $route2 = new Route('login', 'users/login'); $route2->match('login'); $request = new Request(new Env(), $route2); $this->assertEquals('/login', $request->uri()); $this->assertEquals('users/login', $request->destination()); $_SERVER['PATH_INFO'] = '/'; $route3 = new Route('/', 'projects/index'); $route3->match('/'); $request = new Request(new Env(), $route3); $this->assertEquals('/', $request->uri()); $this->assertEquals('projects/index', $request->destination()); }