123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- <?php
- namespace Composer\Test\Autoload;
- use Composer\Autoload\ClassLoader;
- /**
- * Tests the Composer\Autoload\ClassLoader class.
- */
- class ClassLoaderTest extends \PHPUnit_Framework_TestCase
- {
- public function testLoadClassDotPhp()
- {
- $loader = new ClassLoader();
- $loader->add('DirDotPhp\\', __DIR__ . '/Fixtures');
- $loader->addPsr4('DirDotPhp\\', __DIR__ . '/Fixtures/DirDotPhp/psr4');
- $class = 'DirDotPhp\\Dir';
- $loader->loadClass($class);
- $this->assertTrue(class_exists($class, false), "->loadClass() loads '$class'.");
- }
- /**
- * Tests regular PSR-0 and PSR-4 class loading.
- *
- * @dataProvider getLoadClassTests
- *
- * @param string $class The fully-qualified class name to test, without preceding namespace separator.
- * @param bool $prependSeparator Whether to call ->loadClass() with a class name with preceding
- * namespace separator, as it happens in PHP 5.3.0 - 5.3.2. See https://bugs.php.net/50731
- */
- public function testLoadClass($class, $prependSeparator = false)
- {
- $loader = new ClassLoader();
- $loader->add('Namespaced\\', __DIR__ . '/Fixtures');
- $loader->add('Pearlike_', __DIR__ . '/Fixtures');
- $loader->addPsr4('ShinyVendor\\ShinyPackage\\', __DIR__ . '/Fixtures');
- if ($prependSeparator) {
- $prepend = '\\';
- $message = "->loadClass() loads '$class'.";
- } else {
- $prepend = '';
- $message = "->loadClass() loads '\\$class', as required in PHP 5.3.0 - 5.3.2.";
- }
- $loader->loadClass($prepend . $class);
- $this->assertTrue(class_exists($class, false), $message);
- }
- /**
- * Provides arguments for ->testLoadClass().
- *
- * @return array Array of parameter sets to test with.
- */
- public function getLoadClassTests()
- {
- return array(
- array('Namespaced\\Foo'),
- array('Pearlike_Foo'),
- array('ShinyVendor\\ShinyPackage\\SubNamespace\\Foo'),
- // "Bar" would not work here, since it is defined in a ".inc" file,
- // instead of a ".php" file. So, use "Baz" instead.
- array('Namespaced\\Baz', true),
- array('Pearlike_Bar', true),
- array('ShinyVendor\\ShinyPackage\\SubNamespace\\Bar', true),
- );
- }
- /**
- * getPrefixes method should return empty array if ClassLoader does not have any psr-0 configuration
- */
- public function testGetPrefixesWithNoPSR0Configuration()
- {
- $loader = new ClassLoader();
- $this->assertEmpty($loader->getPrefixes());
- }
- }
|