NamespaceTest.php 1.4 KB

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