Example #1
0
 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'));
 }
Example #2
0
 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());
 }