public function testNSHelpers()
    {
        $doc = RootNode::create('Pharborist');
        $this->assertTrue($doc->hasNamespace('Pharborist'));
        $this->assertFalse($doc->hasNamespace('\\Drupal'));
        $this->assertContains('Pharborist', $doc->getNamespaceNames());
        $this->assertContains('\\Pharborist', $doc->getNamespaceNames(TRUE));
        $namespaces = $doc->getNamespaces();
        $this->assertInstanceOf('\\Pharborist\\NodeCollection', $namespaces);
        $this->assertCount(1, $namespaces);
        $this->assertNull($doc->getNamespace('Drupal'));
        $ns = $doc->getNamespace('Pharborist');
        $this->assertInstanceOf('\\Pharborist\\Namespaces\\NamespaceNode', $ns);
        $this->assertSame($ns, $namespaces[0]);
        $code = <<<'END'
<?php
namespace RoundTable\
  Knights\
  MontyPython;

class Foo {}
END;
        $doc = Parser::parseSource($code);
        $this->assertTrue($doc->hasNamespace('RoundTable\\Knights\\MontyPython'));
        $this->assertContains('\\RoundTable\\Knights\\MontyPython', $doc->getNamespaceNames(TRUE));
    }
 protected function formatSource($source)
 {
     /** @var ParentNode $node */
     $node = Parser::parseSource($source);
     $formatter = FormatterFactory::getDrupalFormatter();
     $formatter->format($node);
     return $node->getText();
 }
    public function testRootNode()
    {
        $snippet = <<<'END'
<?php
namespace Foo\Baz; class Blorg { public function __construct() {}}
END;
        $expected = <<<'END'
<?php
namespace Foo\Baz;

class Blorg
{
    public function __construct()
    {
    }
}
END;
        $doc = Parser::parseSource($snippet);
        $this->formatter->format($doc);
        $this->assertEquals($expected, $doc->getText());
    }
    public function testIsClassMethodCall()
    {
        $source = <<<'END'
<?php
use MyNamespace\Test;

A::test();
MyNamespace\Test::method();
Test::method();
END;
        /** @var \Pharborist\Objects\ClassMethodCallNode[] $method_calls */
        $method_calls = Parser::parseSource($source)->find(Filter::isClassMethodCall('\\A', 'test'));
        $this->assertCount(1, $method_calls);
        $method_call = $method_calls[0];
        $this->assertInstanceOf('\\Pharborist\\Objects\\ClassMethodCallNode', $method_call);
        $this->assertEquals('\\A', $method_call->getClassName()->getAbsolutePath());
        $this->assertEquals('test', $method_call->getMethodName()->getText());
        $method_calls = Parser::parseSource($source)->find(Filter::isClassMethodCall('\\MyNamespace\\Test', 'method'));
        $this->assertCount(2, $method_calls);
        $method_call = $method_calls[0];
        $this->assertInstanceOf('\\Pharborist\\Objects\\ClassMethodCallNode', $method_call);
        $this->assertEquals('\\MyNamespace\\Test', $method_call->getClassName()->getAbsolutePath());
        $this->assertEquals('method', $method_call->getMethodName()->getText());
    }