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