View source
<?php
namespace Symfony\Cmf\Component\Routing;
use Symfony\Cmf\Component\Routing\Test\CmfUnitTestCase;
use Symfony\Component\Routing\Route;
class PagedRouteCollectionTest extends CmfUnitTestCase {
protected $routeProvider;
protected function setUp() {
$this->routeProvider = $this
->getMock('Symfony\\Cmf\\Component\\Routing\\PagedRouteProviderInterface');
}
public function testIterator($amountRoutes, $routesLoadedInParallel, $expectedCalls = array()) {
$routes = array();
for ($i = 0; $i < $amountRoutes; $i++) {
$routes['test_' . $i] = new Route("/example-{$i}");
}
$names = array_keys($routes);
foreach ($expectedCalls as $i => $range) {
$this->routeProvider
->expects($this
->at($i))
->method('getRoutesPaged')
->with($range[0], $range[1])
->will($this
->returnValue(array_slice($routes, $range[0], $range[1])));
}
$route_collection = new PagedRouteCollection($this->routeProvider, $routesLoadedInParallel);
$counter = 0;
foreach ($route_collection as $route_name => $route) {
$this
->assertEquals($routes[$route_name], $route);
$this
->assertEquals($route_name, $names[$counter]);
$counter++;
}
}
public function providerIterator() {
$data = array();
$data[] = array(
0,
20,
array(
array(
0,
20,
),
),
);
$data[] = array(
10,
20,
array(
array(
0,
20,
),
),
);
$data[] = array(
20,
20,
array(
array(
0,
20,
),
array(
20,
20,
),
),
);
$data[] = array(
39,
20,
array(
array(
0,
20,
),
array(
20,
20,
),
),
);
$data[] = array(
40,
20,
array(
array(
0,
20,
),
array(
20,
20,
),
array(
40,
20,
),
),
);
$data[] = array(
41,
20,
array(
array(
0,
20,
),
array(
20,
20,
),
array(
40,
20,
),
),
);
$data[] = array(
42,
23,
array(
array(
0,
23,
),
array(
23,
23,
),
),
);
return $data;
}
public function testCount() {
$this->routeProvider
->expects($this
->once())
->method('getRoutesCount')
->will($this
->returnValue(12));
$routeCollection = new PagedRouteCollection($this->routeProvider);
$this
->assertEquals(12, $routeCollection
->count());
}
public function testIteratingAndRewind() {
$routes = array();
for ($i = 0; $i < 30; $i++) {
$routes['test_' . $i] = new Route("/example-{$i}");
}
$this->routeProvider
->expects($this
->any())
->method('getRoutesPaged')
->will($this
->returnValueMap(array(
array(
0,
10,
array_slice($routes, 0, 10),
),
array(
10,
10,
array_slice($routes, 9, 10),
),
array(
20,
10,
array(),
),
)));
$routeCollection = new PagedRouteCollection($this->routeProvider, 10);
$routeCollection
->rewind();
for ($i = 0; $i < 29; $i++) {
$routeCollection
->next();
}
$routeCollection
->rewind();
$this
->assertEquals('test_0', $routeCollection
->key());
$this
->assertEquals($routes['test_0'], $routeCollection
->current());
}
}