2016-09-02 19:13:30 +00:00
|
|
|
|
<?php
|
2019-06-18 08:59:40 +00:00
|
|
|
|
declare(strict_types=1);
|
2016-09-02 19:13:30 +00:00
|
|
|
|
|
2016-10-08 12:51:49 +00:00
|
|
|
|
namespace LanguageServer\Tests\Server\TextDocument;
|
2016-09-02 19:13:30 +00:00
|
|
|
|
|
2019-06-18 08:59:40 +00:00
|
|
|
|
use Amp\Loop;
|
2016-10-18 21:09:51 +00:00
|
|
|
|
use LanguageServer\Tests\Server\ServerTestCase;
|
2016-09-02 19:13:30 +00:00
|
|
|
|
use LanguageServer\Tests\MockProtocolStream;
|
2016-10-08 12:51:49 +00:00
|
|
|
|
use LanguageServer\{Server, LanguageClient, Project};
|
2018-09-09 12:37:35 +00:00
|
|
|
|
use LanguageServerProtocol\{TextDocumentIdentifier, SymbolInformation, SymbolKind, Position, Location, Range};
|
2016-10-18 21:09:51 +00:00
|
|
|
|
use function LanguageServer\pathToUri;
|
2016-09-02 19:13:30 +00:00
|
|
|
|
|
2016-10-18 21:09:51 +00:00
|
|
|
|
class DocumentSymbolTest extends ServerTestCase
|
2016-09-02 19:13:30 +00:00
|
|
|
|
{
|
2016-10-08 12:51:49 +00:00
|
|
|
|
public function test()
|
|
|
|
|
{
|
2019-06-18 08:59:40 +00:00
|
|
|
|
Loop::run(function () {
|
|
|
|
|
// Request symbols
|
|
|
|
|
$uri = pathToUri(realpath(__DIR__ . '/../../../fixtures/symbols.php'));
|
|
|
|
|
$result = yield $this->textDocument->documentSymbol(new TextDocumentIdentifier($uri));
|
|
|
|
|
// @codingStandardsIgnoreStart
|
|
|
|
|
$this->assertEquals([
|
|
|
|
|
new SymbolInformation('TestNamespace', SymbolKind::NAMESPACE, $this->getDefinitionLocation('TestNamespace'), ''),
|
|
|
|
|
new SymbolInformation('TEST_CONST', SymbolKind::CONSTANT, $this->getDefinitionLocation('TestNamespace\\TEST_CONST'), 'TestNamespace'),
|
|
|
|
|
new SymbolInformation('TestClass', SymbolKind::CLASS_, $this->getDefinitionLocation('TestNamespace\\TestClass'), 'TestNamespace'),
|
|
|
|
|
new SymbolInformation('TEST_CLASS_CONST', SymbolKind::CONSTANT, $this->getDefinitionLocation('TestNamespace\\TestClass::TEST_CLASS_CONST'), 'TestNamespace\\TestClass'),
|
|
|
|
|
new SymbolInformation('staticTestProperty', SymbolKind::PROPERTY, $this->getDefinitionLocation('TestNamespace\\TestClass::staticTestProperty'), 'TestNamespace\\TestClass'),
|
|
|
|
|
new SymbolInformation('testProperty', SymbolKind::PROPERTY, $this->getDefinitionLocation('TestNamespace\\TestClass::testProperty'), 'TestNamespace\\TestClass'),
|
|
|
|
|
new SymbolInformation('staticTestMethod', SymbolKind::METHOD, $this->getDefinitionLocation('TestNamespace\\TestClass::staticTestMethod()'), 'TestNamespace\\TestClass'),
|
|
|
|
|
new SymbolInformation('testMethod', SymbolKind::METHOD, $this->getDefinitionLocation('TestNamespace\\TestClass::testMethod()'), 'TestNamespace\\TestClass'),
|
|
|
|
|
new SymbolInformation('TestTrait', SymbolKind::CLASS_, $this->getDefinitionLocation('TestNamespace\\TestTrait'), 'TestNamespace'),
|
|
|
|
|
new SymbolInformation('TestInterface', SymbolKind::INTERFACE, $this->getDefinitionLocation('TestNamespace\\TestInterface'), 'TestNamespace'),
|
|
|
|
|
new SymbolInformation('test_function', SymbolKind::FUNCTION, $this->getDefinitionLocation('TestNamespace\\test_function()'), 'TestNamespace'),
|
|
|
|
|
new SymbolInformation('ChildClass', SymbolKind::CLASS_, $this->getDefinitionLocation('TestNamespace\\ChildClass'), 'TestNamespace'),
|
|
|
|
|
new SymbolInformation('Example', SymbolKind::CLASS_, $this->getDefinitionLocation('TestNamespace\\Example'), 'TestNamespace'),
|
|
|
|
|
new SymbolInformation('__construct', SymbolKind::CONSTRUCTOR, $this->getDefinitionLocation('TestNamespace\\Example::__construct'), 'TestNamespace\\Example'),
|
|
|
|
|
new SymbolInformation('__destruct', SymbolKind::CONSTRUCTOR, $this->getDefinitionLocation('TestNamespace\\Example::__destruct'), 'TestNamespace\\Example'),
|
|
|
|
|
new SymbolInformation('TestNamespace\\InnerNamespace', SymbolKind::NAMESPACE, $this->getDefinitionLocation('TestNamespace\\InnerNamespace'), 'TestNamespace'),
|
|
|
|
|
new SymbolInformation('InnerClass', SymbolKind::CLASS_, $this->getDefinitionLocation('TestNamespace\\InnerNamespace\\InnerClass'), 'TestNamespace\\InnerNamespace'),
|
|
|
|
|
], $result);
|
|
|
|
|
// @codingStandardsIgnoreEnd
|
|
|
|
|
});
|
2016-09-02 19:13:30 +00:00
|
|
|
|
}
|
|
|
|
|
}
|