123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 |
- <?php
- /*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
- namespace Symfony\Tests\Component\Routing;
- use Symfony\Component\Routing\Route;
- require __DIR__.'/RouteCompiler.php';
- class RouteCompilerTest extends \PHPUnit_Framework_TestCase
- {
- /**
- * @dataProvider provideCompileData
- */
- public function testCompile($name, $arguments, $prefix, $regex, $variables, $tokens)
- {
- $r = new \ReflectionClass('Symfony\\Component\\Routing\\Route');
- $route = $r->newInstanceArgs($arguments);
- $compiled = $route->compile();
- $this->assertEquals($prefix, $compiled->getStaticPrefix(), $name.' (static prefix)');
- $this->assertEquals($regex, $compiled->getRegex(), $name.' (regex)');
- $this->assertEquals($variables, $compiled->getVariables(), $name.' (variables)');
- $this->assertEquals($tokens, $compiled->getTokens(), $name.' (tokens)');
- }
- public function provideCompileData()
- {
- return array(
- array(
- 'Static route',
- array('/foo'),
- '/foo', '#^/foo$#x', array(), array(
- array('text', '/', 'foo', null),
- )),
- array(
- 'Route with a variable',
- array('/foo/{bar}'),
- '/foo', '#^/foo/(?P<bar>[^/\.]+?)$#x', array('bar' => '{bar}'), array(
- array('variable', '/', '{bar}', 'bar'),
- array('text', '/', 'foo', null),
- )),
- array(
- 'Route with a variable that has a default value',
- array('/foo/{bar}', array('bar' => 'bar')),
- '/foo', '#^/foo(?:/(?P<bar>[^/\.]+?))?$#x', array('bar' => '{bar}'), array(
- array('variable', '/', '{bar}', 'bar'),
- array('text', '/', 'foo', null),
- )),
- array(
- 'Route with several variables',
- array('/foo/{bar}/{foobar}'),
- '/foo', '#^/foo/(?P<bar>[^/\.]+?)/(?P<foobar>[^/\.]+?)$#x', array('bar' => '{bar}', 'foobar' => '{foobar}'), array(
- array('variable', '/', '{foobar}', 'foobar'),
- array('variable', '/', '{bar}', 'bar'),
- array('text', '/', 'foo', null),
- )),
- array(
- 'Route with several variables that have default values',
- array('/foo/{bar}/{foobar}', array('bar' => 'bar', 'foobar' => '')),
- '/foo', '#^/foo(?:/(?P<bar>[^/\.]+?) (?:/(?P<foobar>[^/\.]+?) )?)?$#x', array('bar' => '{bar}', 'foobar' => '{foobar}'), array(
- array('variable', '/', '{foobar}', 'foobar'),
- array('variable', '/', '{bar}', 'bar'),
- array('text', '/', 'foo', null),
- )),
- array(
- 'Route with several variables but some of them have no default values',
- array('/foo/{bar}/{foobar}', array('bar' => 'bar')),
- '/foo', '#^/foo/(?P<bar>[^/\.]+?)/(?P<foobar>[^/\.]+?)$#x', array('bar' => '{bar}', 'foobar' => '{foobar}'), array(
- array('variable', '/', '{foobar}', 'foobar'),
- array('variable', '/', '{bar}', 'bar'),
- array('text', '/', 'foo', null),
- )),
- array(
- 'Route with a custom token',
- array('/=foo', array(), array(), array('compiler_class' => 'Symfony\\Tests\\Component\\Routing\\RouteCompiler')),
- '', '#^/foo/(?P<foo>[^/\.]+?)$#x', array('foo' => '=foo'), array(
- array('label', '/', '=foo', 'foo'),
- )),
- );
- }
- }
|