cleaner = new CodeCleaner(); $this->setPass(new NamespacePass($this->cleaner)); } public function testProcess() { $this->parseAndTraverse(''); $this->assertNull($this->cleaner->getNamespace()); $this->parseAndTraverse('array_merge()'); $this->assertNull($this->cleaner->getNamespace()); // A non-block namespace statement should set the current namespace. $this->parseAndTraverse('namespace Alpha'); $this->assertSame(['Alpha'], $this->cleaner->getNamespace()); // A new non-block namespace statement should override the current namespace. $this->parseAndTraverse('namespace Beta; class B {}'); $this->assertSame(['Beta'], $this->cleaner->getNamespace()); // A new block namespace clears out the current namespace... $this->parseAndTraverse('namespace Gamma { array_merge(); }'); if (defined('PhpParser\\Node\\Stmt\\Namespace_::KIND_SEMICOLON')) { $this->assertNull($this->cleaner->getNamespace()); } else { // But not for PHP-Parser < v3.1.2 :( $this->assertSame(['Gamma'], $this->cleaner->getNamespace()); } $this->parseAndTraverse('namespace Delta'); // A null namespace clears out the current namespace. $this->parseAndTraverse('namespace { array_merge(); }'); $this->assertNull($this->cleaner->getNamespace()); } }