X-Git-Url: http://www.aleph1.co.uk/gitweb/?p=yaffs-website;a=blobdiff_plain;f=vendor%2Fsymfony%2Fdependency-injection%2FTests%2FCompiler%2FPriorityTaggedServiceTraitTest.php;fp=vendor%2Fsymfony%2Fdependency-injection%2FTests%2FCompiler%2FPriorityTaggedServiceTraitTest.php;h=61e3fa947a47d56a24eb08d21e6707654dd1efc0;hp=0000000000000000000000000000000000000000;hb=9917807b03b64faf00f6a1f29dcb6eafc454efa5;hpb=aea91e65e895364e460983b890e295aa5d5540a5 diff --git a/vendor/symfony/dependency-injection/Tests/Compiler/PriorityTaggedServiceTraitTest.php b/vendor/symfony/dependency-injection/Tests/Compiler/PriorityTaggedServiceTraitTest.php new file mode 100644 index 000000000..61e3fa947 --- /dev/null +++ b/vendor/symfony/dependency-injection/Tests/Compiler/PriorityTaggedServiceTraitTest.php @@ -0,0 +1,91 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\DependencyInjection\Tests\Compiler; + +use PHPUnit\Framework\TestCase; +use Symfony\Component\DependencyInjection\Compiler\PriorityTaggedServiceTrait; +use Symfony\Component\DependencyInjection\ContainerBuilder; +use Symfony\Component\DependencyInjection\Reference; + +class PriorityTaggedServiceTraitTest extends TestCase +{ + public function testThatCacheWarmersAreProcessedInPriorityOrder() + { + $services = array( + 'my_service1' => array('my_custom_tag' => array('priority' => 100)), + 'my_service2' => array('my_custom_tag' => array('priority' => 200)), + 'my_service3' => array('my_custom_tag' => array('priority' => -501)), + 'my_service4' => array('my_custom_tag' => array()), + 'my_service5' => array('my_custom_tag' => array('priority' => -1)), + 'my_service6' => array('my_custom_tag' => array('priority' => -500)), + 'my_service7' => array('my_custom_tag' => array('priority' => -499)), + 'my_service8' => array('my_custom_tag' => array('priority' => 1)), + 'my_service9' => array('my_custom_tag' => array('priority' => -2)), + 'my_service10' => array('my_custom_tag' => array('priority' => -1000)), + 'my_service11' => array('my_custom_tag' => array('priority' => -1001)), + 'my_service12' => array('my_custom_tag' => array('priority' => -1002)), + 'my_service13' => array('my_custom_tag' => array('priority' => -1003)), + 'my_service14' => array('my_custom_tag' => array('priority' => -1000)), + 'my_service15' => array('my_custom_tag' => array('priority' => 1)), + 'my_service16' => array('my_custom_tag' => array('priority' => -1)), + 'my_service17' => array('my_custom_tag' => array('priority' => 200)), + 'my_service18' => array('my_custom_tag' => array('priority' => 100)), + 'my_service19' => array('my_custom_tag' => array()), + ); + + $container = new ContainerBuilder(); + + foreach ($services as $id => $tags) { + $definition = $container->register($id); + + foreach ($tags as $name => $attributes) { + $definition->addTag($name, $attributes); + } + } + + $expected = array( + new Reference('my_service2'), + new Reference('my_service17'), + new Reference('my_service1'), + new Reference('my_service18'), + new Reference('my_service8'), + new Reference('my_service15'), + new Reference('my_service4'), + new Reference('my_service19'), + new Reference('my_service5'), + new Reference('my_service16'), + new Reference('my_service9'), + new Reference('my_service7'), + new Reference('my_service6'), + new Reference('my_service3'), + new Reference('my_service10'), + new Reference('my_service14'), + new Reference('my_service11'), + new Reference('my_service12'), + new Reference('my_service13'), + ); + + $priorityTaggedServiceTraitImplementation = new PriorityTaggedServiceTraitImplementation(); + + $this->assertEquals($expected, $priorityTaggedServiceTraitImplementation->test('my_custom_tag', $container)); + } +} + +class PriorityTaggedServiceTraitImplementation +{ + use PriorityTaggedServiceTrait; + + public function test($tagName, ContainerBuilder $container) + { + return $this->findAndSortTaggedServices($tagName, $container); + } +}