CheckArgumentsValidityPassTest.php 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. <?php
  2. /*
  3. * This file is part of the Symfony package.
  4. *
  5. * (c) Fabien Potencier <fabien@symfony.com>
  6. *
  7. * For the full copyright and license information, please view the LICENSE
  8. * file that was distributed with this source code.
  9. */
  10. namespace Symfony\Component\DependencyInjection\Tests\Compiler;
  11. use PHPUnit\Framework\TestCase;
  12. use Symfony\Component\DependencyInjection\Compiler\CheckArgumentsValidityPass;
  13. use Symfony\Component\DependencyInjection\ContainerBuilder;
  14. /**
  15. * @author Kévin Dunglas <dunglas@gmail.com>
  16. */
  17. class CheckArgumentsValidityPassTest extends TestCase
  18. {
  19. public function testProcess()
  20. {
  21. $container = new ContainerBuilder();
  22. $definition = $container->register('foo');
  23. $definition->setArguments(array(null, 1, 'a'));
  24. $definition->setMethodCalls(array(
  25. array('bar', array('a', 'b')),
  26. array('baz', array('c', 'd')),
  27. ));
  28. $pass = new CheckArgumentsValidityPass();
  29. $pass->process($container);
  30. $this->assertEquals(array(null, 1, 'a'), $container->getDefinition('foo')->getArguments());
  31. $this->assertEquals(array(
  32. array('bar', array('a', 'b')),
  33. array('baz', array('c', 'd')),
  34. ), $container->getDefinition('foo')->getMethodCalls());
  35. }
  36. /**
  37. * @expectedException \Symfony\Component\DependencyInjection\Exception\RuntimeException
  38. * @dataProvider definitionProvider
  39. */
  40. public function testException(array $arguments, array $methodCalls)
  41. {
  42. $container = new ContainerBuilder();
  43. $definition = $container->register('foo');
  44. $definition->setArguments($arguments);
  45. $definition->setMethodCalls($methodCalls);
  46. $pass = new CheckArgumentsValidityPass();
  47. $pass->process($container);
  48. }
  49. public function definitionProvider()
  50. {
  51. return array(
  52. array(array(null, 'a' => 'a'), array()),
  53. array(array(1 => 1), array()),
  54. array(array(), array(array('baz', array(null, 'a' => 'a')))),
  55. array(array(), array(array('baz', array(1 => 1)))),
  56. );
  57. }
  58. }