Chris@13
|
1 <?php declare(strict_types=1);
|
Chris@0
|
2
|
Chris@0
|
3 namespace PhpParser\Builder;
|
Chris@0
|
4
|
Chris@0
|
5 use PhpParser\Comment\Doc;
|
Chris@0
|
6 use PhpParser\Node;
|
Chris@0
|
7 use PhpParser\Node\Stmt;
|
Chris@13
|
8 use PHPUnit\Framework\TestCase;
|
Chris@0
|
9
|
Chris@13
|
10 class NamespaceTest extends TestCase
|
Chris@0
|
11 {
|
Chris@0
|
12 protected function createNamespaceBuilder($fqn) {
|
Chris@0
|
13 return new Namespace_($fqn);
|
Chris@0
|
14 }
|
Chris@0
|
15
|
Chris@0
|
16 public function testCreation() {
|
Chris@0
|
17 $stmt1 = new Stmt\Class_('SomeClass');
|
Chris@0
|
18 $stmt2 = new Stmt\Interface_('SomeInterface');
|
Chris@0
|
19 $stmt3 = new Stmt\Function_('someFunction');
|
Chris@0
|
20 $docComment = new Doc('/** Test */');
|
Chris@0
|
21 $expected = new Stmt\Namespace_(
|
Chris@0
|
22 new Node\Name('Name\Space'),
|
Chris@13
|
23 [$stmt1, $stmt2, $stmt3],
|
Chris@13
|
24 ['comments' => [$docComment]]
|
Chris@0
|
25 );
|
Chris@0
|
26
|
Chris@0
|
27 $node = $this->createNamespaceBuilder('Name\Space')
|
Chris@0
|
28 ->addStmt($stmt1)
|
Chris@13
|
29 ->addStmts([$stmt2, $stmt3])
|
Chris@0
|
30 ->setDocComment($docComment)
|
Chris@0
|
31 ->getNode()
|
Chris@0
|
32 ;
|
Chris@0
|
33 $this->assertEquals($expected, $node);
|
Chris@0
|
34
|
Chris@13
|
35 $node = $this->createNamespaceBuilder(new Node\Name(['Name', 'Space']))
|
Chris@0
|
36 ->setDocComment($docComment)
|
Chris@13
|
37 ->addStmts([$stmt1, $stmt2])
|
Chris@0
|
38 ->addStmt($stmt3)
|
Chris@0
|
39 ->getNode()
|
Chris@0
|
40 ;
|
Chris@0
|
41 $this->assertEquals($expected, $node);
|
Chris@0
|
42
|
Chris@0
|
43 $node = $this->createNamespaceBuilder(null)->getNode();
|
Chris@0
|
44 $this->assertNull($node->name);
|
Chris@0
|
45 $this->assertEmpty($node->stmts);
|
Chris@0
|
46 }
|
Chris@0
|
47 }
|