Failed Conditions
Pull Request — master (#38)
by Matthias
02:51
created

LocateDefinedSymbolsFromASTRootsTest   A

Complexity

Total Complexity 6

Size/Duplication

Total Lines 68
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
wmc 6
dl 0
loc 68
rs 10
c 0
b 0
f 0

6 Methods

Rating   Name   Duplication   Size   Complexity  
A testBasicLocateTrait() 0 15 1
A testBasicLocateClass() 0 15 1
A setUp() 0 5 1
A testNoRoots() 0 5 1
A locate() 0 3 1
A testBasicLocateAnonymous() 0 10 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 PhpParser\Node\Stmt\Trait_;
9
use PHPUnit\Framework\TestCase;
10
11
/**
12
 * @covers \ComposerRequireChecker\DefinedSymbolsLocator\LocateDefinedSymbolsFromASTRoots
13
 */
14
class LocateDefinedSymbolsFromASTRootsTest extends TestCase
15
{
16
    /** @var LocateDefinedSymbolsFromASTRoots */
17
    private $locator;
18
19
    protected function setUp()
20
    {
21
        parent::setUp();
22
23
        $this->locator = new LocateDefinedSymbolsFromASTRoots();
24
    }
25
26
    public function testNoRoots()
27
    {
28
        $symbols = $this->locate([]);
29
30
        $this->assertCount(0, $symbols);
31
    }
32
33
    public function testBasicLocateClass()
34
    {
35
        $roots = [
36
            [new Class_('MyClassA'), new Class_('MyClassB')],
37
            [new Class_('MyClassC')],
38
        ];
39
40
        $symbols = $this->locate([$roots]);
41
42
        $this->assertInternalType('array', $symbols);
43
        $this->assertCount(3, $symbols);
44
45
        $this->assertContains('MyClassA', $symbols);
46
        $this->assertContains('MyClassB', $symbols);
47
        $this->assertContains('MyClassC', $symbols);
48
    }
49
50
    public function testBasicLocateTrait()
51
    {
52
        $roots = [
53
            [new Trait_('MyTraitA'), new Trait_('MyTraitB')],
54
            [new Trait_('MyTraitC')],
55
        ];
56
57
        $symbols = $this->locate([$roots]);
58
59
        $this->assertInternalType('array', $symbols);
60
        $this->assertCount(3, $symbols);
61
62
        $this->assertContains('MyTraitA', $symbols);
63
        $this->assertContains('MyTraitB', $symbols);
64
        $this->assertContains('MyTraitC', $symbols);
65
    }
66
67
    public function testBasicLocateAnonymous()
68
    {
69
        $roots = [
70
            [new Class_(null)],
71
        ];
72
73
        $symbols = $this->locate([$roots]);
74
75
        $this->assertInternalType('array', $symbols);
76
        $this->assertCount(0, $symbols);
77
    }
78
79
    private function locate(array $roots): array
80
    {
81
        return ($this->locator)(new ArrayObject($roots));
82
    }
83
}
84