/** * Deletes all temporary files * * @return void */ public function tearDown() { AutoloaderTestHelper::deleteDirectory('.'); AutoloaderTestHelper::deleteDirectory(TestIndex::getIndexDirectory(), false); }
/** * Provides test cases for testBuildIndex() * * A test case is a Autoloader for a certain class path and a list of all * class definitions in that class path. * * @see testBuildIndex() * @return Array */ public function provideTestBuildIndex() { $cases = array(); $testHelper = new AutoloaderTestHelper($this); $testHelper->deleteDirectory('testBuildIndex/'); $classes = array($testHelper->makeClass('Test', 'testBuildIndex/'), $testHelper->makeClass('Test', 'testBuildIndex/'), $testHelper->makeClass('Test', 'testBuildIndex/A'), $testHelper->makeClass('Test', 'testBuildIndex/A'), $testHelper->makeClass('Test', 'testBuildIndex/A'), $testHelper->makeClass('Test', 'testBuildIndex/A/B'), $testHelper->makeClass('Test', 'testBuildIndex/A/B'), $testHelper->makeClass('Test', 'testBuildIndex/A/C'), $testHelper->makeClass('Test', 'testBuildIndex/A/C'), $testHelper->makeClass('Test', 'testBuildIndex/D'), $testHelper->makeClass('Test', 'testBuildIndex/D/E')); $cases[] = array(new Autoloader($testHelper->getClassDirectory('testBuildIndex')), $this->_getPaths($classes, $testHelper)); $testHelper->deleteDirectory('testBuildIndex2/'); $classes = array($testHelper->makeClass('Test', 'testBuildIndex2/')); $cases[] = array(new Autoloader($testHelper->getClassDirectory('testBuildIndex2')), $this->_getPaths($classes, $testHelper)); $testHelper->deleteDirectory('testBuildIndex3/'); $classes = array($testHelper->makeClass('Test', 'testBuildIndex3/'), $testHelper->makeClass('Test', 'testBuildIndex3/')); $cases[] = array(new Autoloader($testHelper->getClassDirectory('testBuildIndex3')), $this->_getPaths($classes, $testHelper)); $testHelper->deleteDirectory('testBuildIndex4/'); $classes = array($testHelper->makeClass('Test', 'testBuildIndex4/A/B'), $testHelper->makeClass('Test', 'testBuildIndex4/B/C')); $cases[] = array(new Autoloader($testHelper->getClassDirectory('testBuildIndex4')), $this->_getPaths($classes, $testHelper)); return $cases; }
/** * Provides testLoadsOfFiles() with test cases * * A test case is an instance of AutoloaderFileIterator and a class path. * The class path should contain a large amount of files. * * @see testLoadsOfFiles() * @return Array */ public function provideTestLoadsOfFiles() { AutoloaderTestHelper::deleteDirectory("testLoadsOfFiles"); $alTestHelper = new AutoloaderTestHelper($this); for ($i = 0; $i < 150; $i++) { $alTestHelper->makeClass("anyClass", "testLoadsOfFiles/flat"); } for ($i = 0; $i < 150; $i++) { $alTestHelper->makeClass("anyClass", "testLoadsOfFiles" . str_repeat('/sub', $i)); } return array(array(new AutoloaderFileIterator_PriorityList(), "testLoadsOfFiles/flat"), array(new AutoloaderFileIterator_Simple(), "testLoadsOfFiles/flat"), array(new AutoloaderFileIterator_SimpleCached(), "testLoadsOfFiles/flat"), array(new AutoloaderFileIterator_PriorityList(), "testLoadsOfFiles/sub"), array(new AutoloaderFileIterator_Simple(), "testLoadsOfFiles/sub"), array(new AutoloaderFileIterator_SimpleCached(), "testLoadsOfFiles/sub")); }
/** * buildIndex() won't fail if a class is defined multiple times in the same * file. * * Some popular frameworks do use that pattern to define a class conditional * in the same file. * * @test * @see Autoloader::buildIndex() * @link https://github.com/malkusch/php-autoloader/pull/6 */ public function testBuildIndexSupportsSameClassInSameFile() { $directory = "testBuildIndexSupportsSameClassInSameFile"; $testHelper = new AutoloaderTestHelper($this); $definition = "<?php if (true) { class %name%{} } else { class %name%{} } ?>"; $testHelper->deleteDirectory("{$directory}/"); $class = $testHelper->makeClass('Test', "{$directory}/", $definition); $autoloader = new Autoloader($testHelper->getClassDirectory($directory)); $autoloader->buildIndex(); $foundPaths = $autoloader->getIndex()->getPaths(); $this->assertEquals($this->_getPaths([$class], $testHelper), $foundPaths); }