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