/** * test the parse method of DashedRoute. * * @return void */ public function testParse() { $route = new DashedRoute('/:controller/:action/:id', [], ['id' => Router::ID]); $route->compile(); $result = $route->parse('/my-posts/my-view/1'); $this->assertEquals('MyPosts', $result['controller']); $this->assertEquals('myView', $result['action']); $this->assertEquals('1', $result['id']); $route = new DashedRoute('/:controller/:action-:id'); $route->compile(); $result = $route->parse('/my-posts/my-view-1'); $this->assertEquals('MyPosts', $result['controller']); $this->assertEquals('myView', $result['action']); $this->assertEquals('1', $result['id']); $route = new DashedRoute('/:controller/:action/:slug-:id', [], ['id' => Router::ID]); $route->compile(); $result = $route->parse('/my-posts/my-view/the-slug-1'); $this->assertEquals('MyPosts', $result['controller']); $this->assertEquals('myView', $result['action']); $this->assertEquals('1', $result['id']); $this->assertEquals('the-slug', $result['slug']); $route = new DashedRoute('/admin/:controller', ['prefix' => 'admin', 'action' => 'index']); $route->compile(); $result = $route->parse('/admin/'); $this->assertFalse($result); $result = $route->parse('/admin/my-posts'); $this->assertEquals('MyPosts', $result['controller']); $this->assertEquals('index', $result['action']); $route = new DashedRoute('/media/search/*', ['controller' => 'Media', 'action' => 'searchIt']); $result = $route->parse('/media/search'); $this->assertEquals('Media', $result['controller']); $this->assertEquals('searchIt', $result['action']); $this->assertEquals([], $result['pass']); $result = $route->parse('/media/search/tv_shows'); $this->assertEquals('Media', $result['controller']); $this->assertEquals('searchIt', $result['action']); $this->assertEquals(['tv_shows'], $result['pass']); }