Skip to content

Commit 6752c26

Browse files
committed
Add test case for DefinitionResolver
1 parent 2a19995 commit 6752c26

File tree

2 files changed

+71
-0
lines changed

2 files changed

+71
-0
lines changed

tests/DefinitionResolverTest.php

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
<?php
2+
declare(strict_types = 1);
3+
4+
namespace LanguageServer\Tests;
5+
6+
use PHPUnit\Framework\TestCase;
7+
use LanguageServer\Index\Index;
8+
use LanguageServer\{DefinitionResolver, Parser};
9+
10+
class DefinitionResolverTest extends TestCase
11+
{
12+
public function testCreateDefinitionFromNode()
13+
{
14+
$parser = new Parser;
15+
$stmts = $parser->parse("<?php\ndefine('TEST_DEFINE', true);");
16+
$stmts[0]->setAttribute('ownerDocument', new MockPhpDocument);
17+
18+
$index = new Index;
19+
$definitionResolver = new DefinitionResolver($index);
20+
$def = $definitionResolver->createDefinitionFromNode($stmts[0], '\TEST_DEFINE');
21+
22+
$this->assertInstanceOf(\phpDocumentor\Reflection\Types\Boolean::class, $def->type);
23+
}
24+
25+
public function testGetTypeFromNode()
26+
{
27+
$parser = new Parser;
28+
$stmts = $parser->parse("<?php\ndefine('TEST_DEFINE', true);");
29+
$stmts[0]->setAttribute('ownerDocument', new MockPhpDocument);
30+
31+
$index = new Index;
32+
$definitionResolver = new DefinitionResolver($index);
33+
$type = $definitionResolver->getTypeFromNode($stmts[0]);
34+
35+
$this->assertInstanceOf(\phpDocumentor\Reflection\Types\Boolean::class, $type);
36+
}
37+
38+
public function testGetDefinedFqn()
39+
{
40+
// define('XXX') (only one argument) must not introduce a new symbol
41+
$parser = new Parser;
42+
$stmts = $parser->parse("<?php\ndefine('TEST_DEFINE');");
43+
$stmts[0]->setAttribute('ownerDocument', new MockPhpDocument);
44+
45+
$index = new Index;
46+
$definitionResolver = new DefinitionResolver($index);
47+
$fqn = $definitionResolver->getDefinedFqn($stmts[0]);
48+
49+
$this->assertNull($fqn);
50+
}
51+
}

tests/MockPhpDocument.php

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
<?php
2+
declare(strict_types = 1);
3+
4+
namespace LanguageServer\Tests;
5+
6+
/**
7+
* A fake document for tests
8+
*/
9+
class MockPhpDocument
10+
{
11+
/**
12+
* Returns fake uri
13+
*
14+
* @return string
15+
*/
16+
public function getUri()
17+
{
18+
return 'file:///whatever';
19+
}
20+
}

0 commit comments

Comments
 (0)