Failed Conditions
Pull Request — master (#38)
by Matthias
04:08 queued 01:21
created

testBasicLocateFunctions()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 14
Code Lines 8

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 14
rs 9.4285
c 0
b 0
f 0
cc 1
eloc 8
nc 1
nop 0
1
<?php
2
3
namespace ComposerRequireCheckerTest\DefinedSymbolsLocator;
4
5
use ArrayObject;
6
use ComposerRequireChecker\DefinedSymbolsLocator\LocateDefinedSymbolsFromASTRoots;
7
use PhpParser\Node\Stmt\Class_;
8
use PhpParser\Node\Stmt\Function_;
9
use PhpParser\Node\Stmt\Trait_;
10
use PHPUnit\Framework\TestCase;
11
12
/**
13
 * @covers \ComposerRequireChecker\DefinedSymbolsLocator\LocateDefinedSymbolsFromASTRoots
14
 */
15
class LocateDefinedSymbolsFromASTRootsTest extends TestCase
16
{
17
    /** @var LocateDefinedSymbolsFromASTRoots */
18
    private $locator;
19
20
    protected function setUp()
21
    {
22
        parent::setUp();
23
24
        $this->locator = new LocateDefinedSymbolsFromASTRoots();
25
    }
26
27
    public function testNoRoots()
28
    {
29
        $symbols = $this->locate([]);
30
31
        $this->assertCount(0, $symbols);
32
    }
33
34
    public function testBasicLocateClass()
35
    {
36
        $roots = [
37
            [new Class_('MyClassA'), new Class_('MyClassB')],
38
            [new Class_('MyClassC')],
39
        ];
40
41
        $symbols = $this->locate([$roots]);
42
43
        $this->assertInternalType('array', $symbols);
44
        $this->assertCount(3, $symbols);
45
46
        $this->assertContains('MyClassA', $symbols);
47
        $this->assertContains('MyClassB', $symbols);
48
        $this->assertContains('MyClassC', $symbols);
49
    }
50
51
    public function testBasicLocateFunctions()
52
    {
53
        $roots = [
54
            [new Function_('myFunctionA')],
55
            [new Class_('myFunctionB')],
56
        ];
57
58
        $symbols = $this->locate([$roots]);
59
60
        $this->assertInternalType('array', $symbols);
61
        $this->assertCount(2, $symbols);
62
63
        $this->assertContains('myFunctionA', $symbols);
64
        $this->assertContains('myFunctionB', $symbols);
65
    }
66
67
    public function testBasicLocateTrait()
68
    {
69
        $roots = [
70
            [new Trait_('MyTraitA'), new Trait_('MyTraitB')],
71
            [new Trait_('MyTraitC')],
72
        ];
73
74
        $symbols = $this->locate([$roots]);
75
76
        $this->assertInternalType('array', $symbols);
77
        $this->assertCount(3, $symbols);
78
79
        $this->assertContains('MyTraitA', $symbols);
80
        $this->assertContains('MyTraitB', $symbols);
81
        $this->assertContains('MyTraitC', $symbols);
82
    }
83
84
    public function testBasicLocateAnonymous()
85
    {
86
        $roots = [
87
            [new Class_(null)],
88
        ];
89
90
        $symbols = $this->locate([$roots]);
91
92
        $this->assertInternalType('array', $symbols);
93
        $this->assertCount(0, $symbols);
94
    }
95
96
    private function locate(array $roots): array
97
    {
98
        return ($this->locator)(new ArrayObject($roots));
99
    }
100
}
101