NamespaceTest.php 1.4 KB

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