123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124 |
- <?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\Component\Routing\Tests\Matcher\Dumper;
- use PHPUnit\Framework\TestCase;
- use Symfony\Component\Routing\Matcher\Dumper\DumperCollection;
- use Symfony\Component\Routing\Matcher\Dumper\DumperPrefixCollection;
- use Symfony\Component\Routing\Matcher\Dumper\DumperRoute;
- use Symfony\Component\Routing\Route;
- class DumperPrefixCollectionTest extends TestCase
- {
- public function testAddPrefixRoute()
- {
- $coll = new DumperPrefixCollection();
- $coll->setPrefix('');
- $route = new DumperRoute('bar', new Route('/foo/bar'));
- $coll = $coll->addPrefixRoute($route);
- $route = new DumperRoute('bar2', new Route('/foo/bar'));
- $coll = $coll->addPrefixRoute($route);
- $route = new DumperRoute('qux', new Route('/foo/qux'));
- $coll = $coll->addPrefixRoute($route);
- $route = new DumperRoute('bar3', new Route('/foo/bar'));
- $coll = $coll->addPrefixRoute($route);
- $route = new DumperRoute('bar4', new Route(''));
- $result = $coll->addPrefixRoute($route);
- $expect = <<<'EOF'
- |-coll /
- | |-coll /f
- | | |-coll /fo
- | | | |-coll /foo
- | | | | |-coll /foo/
- | | | | | |-coll /foo/b
- | | | | | | |-coll /foo/ba
- | | | | | | | |-coll /foo/bar
- | | | | | | | | |-route bar /foo/bar
- | | | | | | | | |-route bar2 /foo/bar
- | | | | | |-coll /foo/q
- | | | | | | |-coll /foo/qu
- | | | | | | | |-coll /foo/qux
- | | | | | | | | |-route qux /foo/qux
- | | | | | |-coll /foo/b
- | | | | | | |-coll /foo/ba
- | | | | | | | |-coll /foo/bar
- | | | | | | | | |-route bar3 /foo/bar
- | |-route bar4 /
- EOF;
- $this->assertSame($expect, $this->collectionToString($result->getRoot(), ' '));
- }
- public function testMergeSlashNodes()
- {
- $coll = new DumperPrefixCollection();
- $coll->setPrefix('');
- $route = new DumperRoute('bar', new Route('/foo/bar'));
- $coll = $coll->addPrefixRoute($route);
- $route = new DumperRoute('bar2', new Route('/foo/bar'));
- $coll = $coll->addPrefixRoute($route);
- $route = new DumperRoute('qux', new Route('/foo/qux'));
- $coll = $coll->addPrefixRoute($route);
- $route = new DumperRoute('bar3', new Route('/foo/bar'));
- $result = $coll->addPrefixRoute($route);
- $result->getRoot()->mergeSlashNodes();
- $expect = <<<'EOF'
- |-coll /f
- | |-coll /fo
- | | |-coll /foo
- | | | |-coll /foo/b
- | | | | |-coll /foo/ba
- | | | | | |-coll /foo/bar
- | | | | | | |-route bar /foo/bar
- | | | | | | |-route bar2 /foo/bar
- | | | |-coll /foo/q
- | | | | |-coll /foo/qu
- | | | | | |-coll /foo/qux
- | | | | | | |-route qux /foo/qux
- | | | |-coll /foo/b
- | | | | |-coll /foo/ba
- | | | | | |-coll /foo/bar
- | | | | | | |-route bar3 /foo/bar
- EOF;
- $this->assertSame($expect, $this->collectionToString($result->getRoot(), ' '));
- }
- private function collectionToString(DumperCollection $collection, $prefix)
- {
- $string = '';
- foreach ($collection as $route) {
- if ($route instanceof DumperCollection) {
- $string .= sprintf("%s|-coll %s\n", $prefix, $route->getPrefix());
- $string .= $this->collectionToString($route, $prefix.'| ');
- } else {
- $string .= sprintf("%s|-route %s %s\n", $prefix, $route->getName(), $route->getRoute()->getPath());
- }
- }
- return $string;
- }
- }
|