4 * This file is part of the Symfony package.
6 * (c) Fabien Potencier <fabien@symfony.com>
8 * For the full copyright and license information, please view the LICENSE
9 * file that was distributed with this source code.
12 namespace Symfony\Component\Routing\Tests\Matcher\Dumper;
14 use PHPUnit\Framework\TestCase;
15 use Symfony\Component\Routing\Route;
16 use Symfony\Component\Routing\Matcher\Dumper\DumperPrefixCollection;
17 use Symfony\Component\Routing\Matcher\Dumper\DumperRoute;
18 use Symfony\Component\Routing\Matcher\Dumper\DumperCollection;
20 class DumperPrefixCollectionTest extends TestCase
22 public function testAddPrefixRoute()
24 $coll = new DumperPrefixCollection();
27 $route = new DumperRoute('bar', new Route('/foo/bar'));
28 $coll = $coll->addPrefixRoute($route);
30 $route = new DumperRoute('bar2', new Route('/foo/bar'));
31 $coll = $coll->addPrefixRoute($route);
33 $route = new DumperRoute('qux', new Route('/foo/qux'));
34 $coll = $coll->addPrefixRoute($route);
36 $route = new DumperRoute('bar3', new Route('/foo/bar'));
37 $coll = $coll->addPrefixRoute($route);
39 $route = new DumperRoute('bar4', new Route(''));
40 $result = $coll->addPrefixRoute($route);
48 | | | | | |-coll /foo/b
49 | | | | | | |-coll /foo/ba
50 | | | | | | | |-coll /foo/bar
51 | | | | | | | | |-route bar /foo/bar
52 | | | | | | | | |-route bar2 /foo/bar
53 | | | | | |-coll /foo/q
54 | | | | | | |-coll /foo/qu
55 | | | | | | | |-coll /foo/qux
56 | | | | | | | | |-route qux /foo/qux
57 | | | | | |-coll /foo/b
58 | | | | | | |-coll /foo/ba
59 | | | | | | | |-coll /foo/bar
60 | | | | | | | | |-route bar3 /foo/bar
65 $this->assertSame($expect, $this->collectionToString($result->getRoot(), ' '));
68 public function testMergeSlashNodes()
70 $coll = new DumperPrefixCollection();
73 $route = new DumperRoute('bar', new Route('/foo/bar'));
74 $coll = $coll->addPrefixRoute($route);
76 $route = new DumperRoute('bar2', new Route('/foo/bar'));
77 $coll = $coll->addPrefixRoute($route);
79 $route = new DumperRoute('qux', new Route('/foo/qux'));
80 $coll = $coll->addPrefixRoute($route);
82 $route = new DumperRoute('bar3', new Route('/foo/bar'));
83 $result = $coll->addPrefixRoute($route);
85 $result->getRoot()->mergeSlashNodes();
92 | | | | |-coll /foo/ba
93 | | | | | |-coll /foo/bar
94 | | | | | | |-route bar /foo/bar
95 | | | | | | |-route bar2 /foo/bar
97 | | | | |-coll /foo/qu
98 | | | | | |-coll /foo/qux
99 | | | | | | |-route qux /foo/qux
101 | | | | |-coll /foo/ba
102 | | | | | |-coll /foo/bar
103 | | | | | | |-route bar3 /foo/bar
107 $this->assertSame($expect, $this->collectionToString($result->getRoot(), ' '));
110 private function collectionToString(DumperCollection $collection, $prefix)
113 foreach ($collection as $route) {
114 if ($route instanceof DumperCollection) {
115 $string .= sprintf("%s|-coll %s\n", $prefix, $route->getPrefix());
116 $string .= $this->collectionToString($route, $prefix.'| ');
118 $string .= sprintf("%s|-route %s %s\n", $prefix, $route->getName(), $route->getRoute()->getPath());