LoaderTest.php 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. <?php
  2. /*
  3. * This file is part of the Symfony package.
  4. * (c) Fabien Potencier <fabien.potencier@symfony-project.com>
  5. *
  6. * For the full copyright and license information, please view the LICENSE
  7. * file that was distributed with this source code.
  8. */
  9. namespace Symfony\Tests\Component\DependencyInjection\Loader;
  10. use Symfony\Component\DependencyInjection\ContainerBuilder;
  11. use Symfony\Component\DependencyInjection\Loader\LoaderResolver;
  12. use Symfony\Component\DependencyInjection\Loader\Loader;
  13. use Symfony\Component\DependencyInjection\Loader\IniFileLoader;
  14. class LoaderTest extends \PHPUnit_Framework_TestCase
  15. {
  16. /**
  17. * @covers Symfony\Component\DependencyInjection\Loader\Loader::__construct
  18. */
  19. public function testConstructor()
  20. {
  21. $loader = new ProjectLoader1(new ContainerBuilder());
  22. $this->assertTrue(true, '__construct() takes a container builder as its first argument');
  23. }
  24. /**
  25. * @covers Symfony\Component\DependencyInjection\Loader\Loader::getResolver
  26. * @covers Symfony\Component\DependencyInjection\Loader\Loader::setResolver
  27. */
  28. public function testGetSetResolver()
  29. {
  30. $resolver = new LoaderResolver();
  31. $loader = new ProjectLoader1(new ContainerBuilder());
  32. $loader->setResolver($resolver);
  33. $this->assertSame($resolver, $loader->getResolver(), '->setResolver() sets the resolver loader');
  34. }
  35. /**
  36. * @covers Symfony\Component\DependencyInjection\Loader\Loader::resolve
  37. */
  38. public function testResolve()
  39. {
  40. $container = new ContainerBuilder();
  41. $resolver = new LoaderResolver(array(
  42. $ini = new IniFileLoader($container, array()),
  43. ));
  44. $loader = new ProjectLoader1($container);
  45. $loader->setResolver($resolver);
  46. $this->assertSame($ini, $loader->resolve('foo.ini'), '->resolve() finds a loader');
  47. $this->assertSame($loader, $loader->resolve('foo.foo'), '->resolve() finds a loader');
  48. try {
  49. $loader->resolve(new \stdClass());
  50. $this->fail('->resolve() throws an \InvalidArgumentException if the resource cannot be loaded');
  51. } catch (\Exception $e) {
  52. $this->assertInstanceOf('\InvalidArgumentException', $e, '->resolve() throws an \InvalidArgumentException if the resource cannot be loaded');
  53. }
  54. }
  55. }
  56. class ProjectLoader1 extends Loader
  57. {
  58. public function load($resource)
  59. {
  60. }
  61. public function supports($resource)
  62. {
  63. return is_string($resource) && 'foo' === pathinfo($resource, PATHINFO_EXTENSION);
  64. }
  65. }