2016-09-02 19:13:30 +00:00
|
|
|
|
<?php
|
2018-11-27 16:51: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
|
|
|
|
|
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()
|
|
|
|
|
{
|
2016-09-02 19:13:30 +00:00
|
|
|
|
// Request symbols
|
2016-10-18 21:09:51 +00:00
|
|
|
|
$uri = pathToUri(realpath(__DIR__ . '/../../../fixtures/symbols.php'));
|
2016-11-14 09:25:44 +00:00
|
|
|
|
$result = $this->textDocument->documentSymbol(new TextDocumentIdentifier($uri))->wait();
|
2016-10-24 17:35:37 +00:00
|
|
|
|
// @codingStandardsIgnoreStart
|
2018-11-27 16:51:40 +00:00
|
|
|
|
$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
|
|
|
|
|
);
|
2016-10-24 17:35:37 +00:00
|
|
|
|
// @codingStandardsIgnoreEnd
|
2016-09-02 19:13:30 +00:00
|
|
|
|
}
|
|
|
|
|
}
|