AutoloadTest.php 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. <?php
  2. require_once 'MockAutoload.php';
  3. use Codeception\Util\MockAutoload as Autoload;
  4. class AutoloadTest extends \PHPUnit\Framework\TestCase
  5. {
  6. protected function setUp()
  7. {
  8. Autoload::setFiles([
  9. '/vendor/foo.bar/src/ClassName.php',
  10. '/vendor/foo.bar/src/DoomClassName.php',
  11. '/vendor/foo.bar/tests/ClassNameTest.php',
  12. '/vendor/foo.bardoom/src/ClassName.php',
  13. '/vendor/foo.bar.baz.dib/src/ClassName.php',
  14. '/vendor/foo.bar.baz.dib.zim.gir/src/ClassName.php',
  15. '/vendor/src/ClassName.php',
  16. '/vendor/src/Foo/Bar/AnotherClassName.php',
  17. '/vendor/src/Bar/Baz/ClassName.php',
  18. ]);
  19. Autoload::addNamespace('Foo\Bar', '/vendor/foo.bar/src');
  20. Autoload::addNamespace('Foo\Bar', '/vendor/foo.bar/tests');
  21. Autoload::addNamespace('Foo\BarDoom', '/vendor/foo.bardoom/src');
  22. Autoload::addNamespace('Foo\Bar\Baz\Dib', '/vendor/foo.bar.baz.dib/src');
  23. Autoload::addNamespace('Foo\Bar\Baz\Dib\Zim\Gir', '/vendor/foo.bar.baz.dib.zim.gir/src');
  24. Autoload::addNamespace('', '/vendor/src');
  25. }
  26. public function testExistingFile()
  27. {
  28. $actual = Autoload::load('Foo\Bar\ClassName');
  29. $expect = '/vendor/foo.bar/src/ClassName.php';
  30. $this->assertSame($expect, $actual);
  31. $actual = Autoload::load('Foo\Bar\ClassNameTest');
  32. $expect = '/vendor/foo.bar/tests/ClassNameTest.php';
  33. $this->assertSame($expect, $actual);
  34. }
  35. public function testMissingFile()
  36. {
  37. $actual = Autoload::load('No_Vendor\No_Package\NoClass');
  38. $this->assertFalse($actual);
  39. }
  40. public function testDeepFile()
  41. {
  42. $actual = Autoload::load('Foo\Bar\Baz\Dib\Zim\Gir\ClassName');
  43. $expect = '/vendor/foo.bar.baz.dib.zim.gir/src/ClassName.php';
  44. $this->assertSame($expect, $actual);
  45. }
  46. public function testConfusion()
  47. {
  48. $actual = Autoload::load('Foo\Bar\DoomClassName');
  49. $expect = '/vendor/foo.bar/src/DoomClassName.php';
  50. $this->assertSame($expect, $actual);
  51. $actual = Autoload::load('Foo\BarDoom\ClassName');
  52. $expect = '/vendor/foo.bardoom/src/ClassName.php';
  53. $this->assertSame($expect, $actual);
  54. }
  55. public function testEmptyPrefix()
  56. {
  57. $actual = Autoload::load('ClassName');
  58. $expect = '/vendor/src/ClassName.php';
  59. $this->assertSame($expect, $actual);
  60. $actual = Autoload::load('Foo\Bar\AnotherClassName');
  61. $expect = '/vendor/src/Foo/Bar/AnotherClassName.php';
  62. $this->assertSame($expect, $actual);
  63. $actual = Autoload::load('Bar\Baz\ClassName');
  64. $expect = '/vendor/src/Bar/Baz/ClassName.php';
  65. $this->assertSame($expect, $actual);
  66. }
  67. }