sonarrradarrplexorganizrnginxdashboardlandingpagestartpagelandinghtpcserverhomepagesabnzbdheimdallembycouchpotatonzbgetbookmarkapplication-dashboardmuximux
		
		
		
		
			You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							177 lines
						
					
					
						
							4.7 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							177 lines
						
					
					
						
							4.7 KiB
						
					
					
				
								<?php
							 | 
						|
								
							 | 
						|
								namespace Symfony\Component\Routing\Tests\Matcher\Dumper;
							 | 
						|
								
							 | 
						|
								use PHPUnit\Framework\TestCase;
							 | 
						|
								use Symfony\Component\Routing\Matcher\Dumper\StaticPrefixCollection;
							 | 
						|
								use Symfony\Component\Routing\Route;
							 | 
						|
								
							 | 
						|
								class StaticPrefixCollectionTest extends TestCase
							 | 
						|
								{
							 | 
						|
								    /**
							 | 
						|
								     * @dataProvider routeProvider
							 | 
						|
								     */
							 | 
						|
								    public function testGrouping(array $routes, $expected)
							 | 
						|
								    {
							 | 
						|
								        $collection = new StaticPrefixCollection('/');
							 | 
						|
								
							 | 
						|
								        foreach ($routes as $route) {
							 | 
						|
								            list($path, $name) = $route;
							 | 
						|
								            $staticPrefix = (new Route($path))->compile()->getStaticPrefix();
							 | 
						|
								            $collection->addRoute($staticPrefix, array($name));
							 | 
						|
								        }
							 | 
						|
								
							 | 
						|
								        $dumped = $this->dumpCollection($collection);
							 | 
						|
								        $this->assertEquals($expected, $dumped);
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    public function routeProvider()
							 | 
						|
								    {
							 | 
						|
								        return array(
							 | 
						|
								            'Simple - not nested' => array(
							 | 
						|
								                array(
							 | 
						|
								                    array('/', 'root'),
							 | 
						|
								                    array('/prefix/segment/', 'prefix_segment'),
							 | 
						|
								                    array('/leading/segment/', 'leading_segment'),
							 | 
						|
								                ),
							 | 
						|
								                <<<EOF
							 | 
						|
								root
							 | 
						|
								prefix_segment
							 | 
						|
								leading_segment
							 | 
						|
								EOF
							 | 
						|
								            ),
							 | 
						|
								            'Nested - small group' => array(
							 | 
						|
								                array(
							 | 
						|
								                    array('/', 'root'),
							 | 
						|
								                    array('/prefix/segment/aa', 'prefix_segment'),
							 | 
						|
								                    array('/prefix/segment/bb', 'leading_segment'),
							 | 
						|
								                ),
							 | 
						|
								                <<<EOF
							 | 
						|
								root
							 | 
						|
								/prefix/segment/
							 | 
						|
								-> prefix_segment
							 | 
						|
								-> leading_segment
							 | 
						|
								EOF
							 | 
						|
								            ),
							 | 
						|
								            'Nested - contains item at intersection' => array(
							 | 
						|
								                array(
							 | 
						|
								                    array('/', 'root'),
							 | 
						|
								                    array('/prefix/segment/', 'prefix_segment'),
							 | 
						|
								                    array('/prefix/segment/bb', 'leading_segment'),
							 | 
						|
								                ),
							 | 
						|
								                <<<EOF
							 | 
						|
								root
							 | 
						|
								/prefix/segment/
							 | 
						|
								-> prefix_segment
							 | 
						|
								-> leading_segment
							 | 
						|
								EOF
							 | 
						|
								            ),
							 | 
						|
								            'Simple one level nesting' => array(
							 | 
						|
								                array(
							 | 
						|
								                    array('/', 'root'),
							 | 
						|
								                    array('/group/segment/', 'nested_segment'),
							 | 
						|
								                    array('/group/thing/', 'some_segment'),
							 | 
						|
								                    array('/group/other/', 'other_segment'),
							 | 
						|
								                ),
							 | 
						|
								                <<<EOF
							 | 
						|
								root
							 | 
						|
								/group/
							 | 
						|
								-> nested_segment
							 | 
						|
								-> some_segment
							 | 
						|
								-> other_segment
							 | 
						|
								EOF
							 | 
						|
								            ),
							 | 
						|
								            'Retain matching order with groups' => array(
							 | 
						|
								                array(
							 | 
						|
								                    array('/group/aa/', 'aa'),
							 | 
						|
								                    array('/group/bb/', 'bb'),
							 | 
						|
								                    array('/group/cc/', 'cc'),
							 | 
						|
								                    array('/(.*)', 'root'),
							 | 
						|
								                    array('/group/dd/', 'dd'),
							 | 
						|
								                    array('/group/ee/', 'ee'),
							 | 
						|
								                    array('/group/ff/', 'ff'),
							 | 
						|
								                ),
							 | 
						|
								                <<<EOF
							 | 
						|
								/group/
							 | 
						|
								-> aa
							 | 
						|
								-> bb
							 | 
						|
								-> cc
							 | 
						|
								root
							 | 
						|
								/group/
							 | 
						|
								-> dd
							 | 
						|
								-> ee
							 | 
						|
								-> ff
							 | 
						|
								EOF
							 | 
						|
								            ),
							 | 
						|
								            'Retain complex matching order with groups at base' => array(
							 | 
						|
								                array(
							 | 
						|
								                    array('/aaa/111/', 'first_aaa'),
							 | 
						|
								                    array('/prefixed/group/aa/', 'aa'),
							 | 
						|
								                    array('/prefixed/group/bb/', 'bb'),
							 | 
						|
								                    array('/prefixed/group/cc/', 'cc'),
							 | 
						|
								                    array('/prefixed/(.*)', 'root'),
							 | 
						|
								                    array('/prefixed/group/dd/', 'dd'),
							 | 
						|
								                    array('/prefixed/group/ee/', 'ee'),
							 | 
						|
								                    array('/prefixed/', 'parent'),
							 | 
						|
								                    array('/prefixed/group/ff/', 'ff'),
							 | 
						|
								                    array('/aaa/222/', 'second_aaa'),
							 | 
						|
								                    array('/aaa/333/', 'third_aaa'),
							 | 
						|
								                ),
							 | 
						|
								                <<<EOF
							 | 
						|
								/aaa/
							 | 
						|
								-> first_aaa
							 | 
						|
								-> second_aaa
							 | 
						|
								-> third_aaa
							 | 
						|
								/prefixed/
							 | 
						|
								-> /prefixed/group/
							 | 
						|
								-> -> aa
							 | 
						|
								-> -> bb
							 | 
						|
								-> -> cc
							 | 
						|
								-> root
							 | 
						|
								-> /prefixed/group/
							 | 
						|
								-> -> dd
							 | 
						|
								-> -> ee
							 | 
						|
								-> -> ff
							 | 
						|
								-> parent
							 | 
						|
								EOF
							 | 
						|
								            ),
							 | 
						|
								
							 | 
						|
								            'Group regardless of segments' => array(
							 | 
						|
								                array(
							 | 
						|
								                    array('/aaa-111/', 'a1'),
							 | 
						|
								                    array('/aaa-222/', 'a2'),
							 | 
						|
								                    array('/aaa-333/', 'a3'),
							 | 
						|
								                    array('/group-aa/', 'g1'),
							 | 
						|
								                    array('/group-bb/', 'g2'),
							 | 
						|
								                    array('/group-cc/', 'g3'),
							 | 
						|
								                ),
							 | 
						|
								                <<<EOF
							 | 
						|
								/aaa-
							 | 
						|
								-> a1
							 | 
						|
								-> a2
							 | 
						|
								-> a3
							 | 
						|
								/group-
							 | 
						|
								-> g1
							 | 
						|
								-> g2
							 | 
						|
								-> g3
							 | 
						|
								EOF
							 | 
						|
								            ),
							 | 
						|
								        );
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    private function dumpCollection(StaticPrefixCollection $collection, $prefix = '')
							 | 
						|
								    {
							 | 
						|
								        $lines = array();
							 | 
						|
								
							 | 
						|
								        foreach ($collection->getRoutes() as $item) {
							 | 
						|
								            if ($item instanceof StaticPrefixCollection) {
							 | 
						|
								                $lines[] = $prefix.$item->getPrefix();
							 | 
						|
								                $lines[] = $this->dumpCollection($item, $prefix.'-> ');
							 | 
						|
								            } else {
							 | 
						|
								                $lines[] = $prefix.implode(' ', $item);
							 | 
						|
								            }
							 | 
						|
								        }
							 | 
						|
								
							 | 
						|
								        return implode("\n", $lines);
							 | 
						|
								    }
							 | 
						|
								}
							 | 
						|
								
							 |