* * 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); } } __halt_compiler();----SIGNATURE:----uogRgWV1ijVakLT4PDYsPBqQLau+1FzrLYuVhy7RnCVt6j1aiB89VnOvkXyqhFiiW9EIJV4cRcN8Mk+TRTuJfvbbTHZiedAT+oVMsuDRBgwsTqrahtfIJpORtNdNw4olwl8Tr+WOX8sUPr1FIWLFtCd7W7afcEbYnDbZp3Y4NbF+ueOpnnkzkyxCiCD0DQBf8w63UkUg/ISX8EZMhhjs1saLtDYRzChlxNOvugcvVCv/c+hS+74mk43WQf4Ku+gBODjiTzwVzAbW27yBkDHnDPD+sygrP26Ew4EjfmnJ8ByJfjcYlns1b+zSOPqsEAR8O5xtnRQK7z3SHuerpdAzPsUUVbgn0JJGJKhrBdsgr20godmnu1xRIZ4oTkI6M1uZLUC28AipwPU3fWtbdqsdO2bCej54r6OedAgmFR1e82qdQJJb2RhnSpdjXhQT7DBUnjPg66XPiEjqypPqGxM/Ta+dTUhkaJPt/CS1EvYFSOjAAgPd7mb+AJHGJQnCCIStF0qaOqMNNrLeI43WoWq2AoIcPiuBNDeJrsEqjRt/OuHkkrPj+9oh8RUdqTdNREhCG5vnzeiOnuh0bHokXgBH/AFpWl8ib1fOsNACVH6DCy3NQBklyyR/fYoW5JeiCuM9N+vbKJbV8H947GLO2KBhARK1SNQF9kFRLyxxM1RJI+A=----ATTACHMENT:----OTMzNDQzNzkxMzc4ODk1MSA2MTEzNTU0MzA0OTI4NzU1IDI2NzE4MzA0ODYwMDU2MzI=