public function PhpMatcherDumperTest::getRouteCollections

File

drupal/core/vendor/symfony/routing/Symfony/Component/Routing/Tests/Matcher/Dumper/PhpMatcherDumperTest.php, line 47

Class

PhpMatcherDumperTest

Namespace

Symfony\Component\Routing\Tests\Matcher\Dumper

Code

public function getRouteCollections() {

  /* test case 1 */
  $collection = new RouteCollection();
  $collection
    ->add('overridden', new Route('/overridden'));

  // defaults and requirements
  $collection
    ->add('foo', new Route('/foo/{bar}', array(
    'def' => 'test',
  ), array(
    'bar' => 'baz|symfony',
  )));

  // method requirement
  $collection
    ->add('bar', new Route('/bar/{foo}', array(), array(
    '_method' => 'GET|head',
  )));

  // GET method requirement automatically adds HEAD as valid
  $collection
    ->add('barhead', new Route('/barhead/{foo}', array(), array(
    '_method' => 'GET',
  )));

  // simple
  $collection
    ->add('baz', new Route('/test/baz'));

  // simple with extension
  $collection
    ->add('baz2', new Route('/test/baz.html'));

  // trailing slash
  $collection
    ->add('baz3', new Route('/test/baz3/'));

  // trailing slash with variable
  $collection
    ->add('baz4', new Route('/test/{foo}/'));

  // trailing slash and method
  $collection
    ->add('baz5', new Route('/test/{foo}/', array(), array(
    '_method' => 'post',
  )));

  // complex name
  $collection
    ->add('baz.baz6', new Route('/test/{foo}/', array(), array(
    '_method' => 'put',
  )));

  // defaults without variable
  $collection
    ->add('foofoo', new Route('/foofoo', array(
    'def' => 'test',
  )));

  // pattern with quotes
  $collection
    ->add('quoter', new Route('/{quoter}', array(), array(
    'quoter' => '[\']+',
  )));

  // space in pattern
  $collection
    ->add('space', new Route('/spa ce'));

  // prefixes
  $collection1 = new RouteCollection();
  $collection1
    ->add('overridden', new Route('/overridden1'));
  $collection1
    ->add('foo1', new Route('/{foo}'));
  $collection1
    ->add('bar1', new Route('/{bar}'));
  $collection2 = new RouteCollection();
  $collection2
    ->addCollection($collection1, '/b\'b');
  $collection2
    ->add('overridden', new Route('/{var}', array(), array(
    'var' => '.*',
  )));
  $collection1 = new RouteCollection();
  $collection1
    ->add('foo2', new Route('/{foo1}'));
  $collection1
    ->add('bar2', new Route('/{bar1}'));
  $collection2
    ->addCollection($collection1, '/b\'b');
  $collection
    ->addCollection($collection2, '/a');

  // overridden through addCollection() and multiple sub-collections with no own prefix
  $collection1 = new RouteCollection();
  $collection1
    ->add('overridden2', new Route('/old'));
  $collection1
    ->add('helloWorld', new Route('/hello/{who}', array(
    'who' => 'World!',
  )));
  $collection2 = new RouteCollection();
  $collection3 = new RouteCollection();
  $collection3
    ->add('overridden2', new Route('/new'));
  $collection3
    ->add('hey', new Route('/hey/'));
  $collection1
    ->addCollection($collection2);
  $collection2
    ->addCollection($collection3);
  $collection
    ->addCollection($collection1, '/multi');

  // "dynamic" prefix
  $collection1 = new RouteCollection();
  $collection1
    ->add('foo3', new Route('/{foo}'));
  $collection1
    ->add('bar3', new Route('/{bar}'));
  $collection2 = new RouteCollection();
  $collection2
    ->addCollection($collection1, '/b');
  $collection
    ->addCollection($collection2, '/{_locale}');

  // route between collections
  $collection
    ->add('ababa', new Route('/ababa'));

  // collection with static prefix but only one route
  $collection1 = new RouteCollection();
  $collection1
    ->add('foo4', new Route('/{foo}'));
  $collection
    ->addCollection($collection1, '/aba');

  // multiple sub-collections with a single route and a prefix each
  $collection1 = new RouteCollection();
  $collection1
    ->add('a', new Route('/a...'));
  $collection2 = new RouteCollection();
  $collection2
    ->add('b', new Route('/{var}'));
  $collection3 = new RouteCollection();
  $collection3
    ->add('c', new Route('/{var}'));
  $collection1
    ->addCollection($collection2, '/b');
  $collection2
    ->addCollection($collection3, '/c');
  $collection
    ->addCollection($collection1, '/a');

  /* test case 2 */
  $redirectCollection = clone $collection;

  // force HTTPS redirection
  $redirectCollection
    ->add('secure', new Route('/secure', array(), array(
    '_scheme' => 'https',
  )));

  // force HTTP redirection
  $redirectCollection
    ->add('nonsecure', new Route('/nonsecure', array(), array(
    '_scheme' => 'http',
  )));

  /* test case 3 */
  $rootprefixCollection = new RouteCollection();
  $rootprefixCollection
    ->add('static', new Route('/test'));
  $rootprefixCollection
    ->add('dynamic', new Route('/{var}'));
  $rootprefixCollection
    ->addPrefix('rootprefix');
  return array(
    array(
      $collection,
      'url_matcher1.php',
      array(),
    ),
    array(
      $redirectCollection,
      'url_matcher2.php',
      array(
        'base_class' => 'Symfony\\Component\\Routing\\Tests\\Fixtures\\RedirectableUrlMatcher',
      ),
    ),
    array(
      $rootprefixCollection,
      'url_matcher3.php',
      array(),
    ),
  );
}