Completed
Push — master ( 7768b0...399b1a )
by Matthias
12s
created

LocateDefinedSymbolsFromASTRootsTest   A

Complexity

Total Complexity 5

Size/Duplication

Total Lines 53
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 3

Importance

Changes 0
Metric Value
wmc 5
lcom 1
cbo 3
dl 0
loc 53
rs 10
c 0
b 0
f 0

5 Methods

Rating   Name   Duplication   Size   Complexity  
A setUp() 0 6 1
A testNoRoots() 0 6 1
A testBasicLocate() 0 16 1
A testBasicLocateAnonymous() 0 11 1
A locate() 0 4 1
1
<?php
2
3
namespace ComposerRequireCheckerTest\DefinedSymbolsLocator;
4
5
use ArrayObject;
6
use ComposerRequireChecker\DefinedSymbolsLocator\LocateDefinedSymbolsFromASTRoots;
7
use PhpParser\Node\Stmt\Class_;
8
use PHPUnit\Framework\TestCase;
9
10
/**
11
 * @covers \ComposerRequireChecker\DefinedSymbolsLocator\LocateDefinedSymbolsFromASTRoots
12
 */
13
class LocateDefinedSymbolsFromASTRootsTest extends TestCase
14
{
15
    /** @var LocateDefinedSymbolsFromASTRoots */
16
    private $locator;
17
18
    protected function setUp()
19
    {
20
        parent::setUp();
21
22
        $this->locator = new LocateDefinedSymbolsFromASTRoots();
23
    }
24
25
    public function testNoRoots()
26
    {
27
        $symbols = $this->locate([]);
28
29
        $this->assertCount(0, $symbols);
30
    }
31
32
    public function testBasicLocate()
33
    {
34
        $roots = [
35
            [new Class_('MyClassA'), new Class_('MyClassB')],
36
            [new Class_('MyClassC')],
37
        ];
38
39
        $symbols = $this->locate([$roots]);
40
41
        $this->assertInternalType('array', $symbols);
42
        $this->assertCount(3, $symbols);
43
44
        $this->assertContains('MyClassA', $symbols);
45
        $this->assertContains('MyClassB', $symbols);
46
        $this->assertContains('MyClassC', $symbols);
47
    }
48
49
    public function testBasicLocateAnonymous()
50
    {
51
        $roots = [
52
            [new Class_(null)],
53
        ];
54
55
        $symbols = $this->locate([$roots]);
56
57
        $this->assertInternalType('array', $symbols);
58
        $this->assertCount(0, $symbols);
59
    }
60
61
    private function locate(array $roots): array
62
    {
63
        return ($this->locator)(new ArrayObject($roots));
64
    }
65
}
66