Patched to Drupal 8.4.8 level. See https://www.drupal.org/sa-core-2018-004 and patch...
[yaffs-website] / vendor / symfony / routing / Tests / Matcher / Dumper / DumperPrefixCollectionTest.php
1 <?php
2
3 /*
4  * This file is part of the Symfony package.
5  *
6  * (c) Fabien Potencier <fabien@symfony.com>
7  *
8  * For the full copyright and license information, please view the LICENSE
9  * file that was distributed with this source code.
10  */
11
12 namespace Symfony\Component\Routing\Tests\Matcher\Dumper;
13
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;
19
20 class DumperPrefixCollectionTest extends TestCase
21 {
22     public function testAddPrefixRoute()
23     {
24         $coll = new DumperPrefixCollection();
25         $coll->setPrefix('');
26
27         $route = new DumperRoute('bar', new Route('/foo/bar'));
28         $coll = $coll->addPrefixRoute($route);
29
30         $route = new DumperRoute('bar2', new Route('/foo/bar'));
31         $coll = $coll->addPrefixRoute($route);
32
33         $route = new DumperRoute('qux', new Route('/foo/qux'));
34         $coll = $coll->addPrefixRoute($route);
35
36         $route = new DumperRoute('bar3', new Route('/foo/bar'));
37         $coll = $coll->addPrefixRoute($route);
38
39         $route = new DumperRoute('bar4', new Route(''));
40         $result = $coll->addPrefixRoute($route);
41
42         $expect = <<<'EOF'
43             |-coll /
44             | |-coll /f
45             | | |-coll /fo
46             | | | |-coll /foo
47             | | | | |-coll /foo/
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
61             | |-route bar4 /
62
63 EOF;
64
65         $this->assertSame($expect, $this->collectionToString($result->getRoot(), '            '));
66     }
67
68     public function testMergeSlashNodes()
69     {
70         $coll = new DumperPrefixCollection();
71         $coll->setPrefix('');
72
73         $route = new DumperRoute('bar', new Route('/foo/bar'));
74         $coll = $coll->addPrefixRoute($route);
75
76         $route = new DumperRoute('bar2', new Route('/foo/bar'));
77         $coll = $coll->addPrefixRoute($route);
78
79         $route = new DumperRoute('qux', new Route('/foo/qux'));
80         $coll = $coll->addPrefixRoute($route);
81
82         $route = new DumperRoute('bar3', new Route('/foo/bar'));
83         $result = $coll->addPrefixRoute($route);
84
85         $result->getRoot()->mergeSlashNodes();
86
87         $expect = <<<'EOF'
88             |-coll /f
89             | |-coll /fo
90             | | |-coll /foo
91             | | | |-coll /foo/b
92             | | | | |-coll /foo/ba
93             | | | | | |-coll /foo/bar
94             | | | | | | |-route bar /foo/bar
95             | | | | | | |-route bar2 /foo/bar
96             | | | |-coll /foo/q
97             | | | | |-coll /foo/qu
98             | | | | | |-coll /foo/qux
99             | | | | | | |-route qux /foo/qux
100             | | | |-coll /foo/b
101             | | | | |-coll /foo/ba
102             | | | | | |-coll /foo/bar
103             | | | | | | |-route bar3 /foo/bar
104
105 EOF;
106
107         $this->assertSame($expect, $this->collectionToString($result->getRoot(), '            '));
108     }
109
110     private function collectionToString(DumperCollection $collection, $prefix)
111     {
112         $string = '';
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.'| ');
117             } else {
118                 $string .= sprintf("%s|-route %s %s\n", $prefix, $route->getName(), $route->getRoute()->getPath());
119             }
120         }
121
122         return $string;
123     }
124 }