| 
									
										
										
										
											2016-10-08 12:59:08 +00:00
										 |  |  | <?php | 
					
						
							|  |  |  | declare(strict_types = 1); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-10-11 23:45:15 +00:00
										 |  |  | namespace LanguageServer\Tests\Server\TextDocument\Definition; | 
					
						
							| 
									
										
										
										
											2016-10-08 12:59:08 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-10-18 21:09:51 +00:00
										 |  |  | use LanguageServer\Tests\Server\ServerTestCase; | 
					
						
							| 
									
										
										
										
											2016-10-18 08:48:16 +00:00
										 |  |  | use LanguageServer\Protocol\{TextDocumentIdentifier, Position, Location, Range}; | 
					
						
							|  |  |  | use function LanguageServer\pathToUri; | 
					
						
							| 
									
										
										
										
											2016-10-08 12:59:08 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-10-18 21:09:51 +00:00
										 |  |  | class GlobalTest extends ServerTestCase | 
					
						
							| 
									
										
										
										
											2016-10-08 12:59:08 +00:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2016-10-24 17:35:37 +00:00
										 |  |  |     public function testDefinitionFileBeginning() | 
					
						
							|  |  |  |     { | 
					
						
							| 
									
										
										
										
											2016-10-11 08:26:46 +00:00
										 |  |  |         // |<?php
 | 
					
						
							| 
									
										
										
										
											2016-11-14 09:25:44 +00:00
										 |  |  |         $result = $this->textDocument->definition( | 
					
						
							|  |  |  |             new TextDocumentIdentifier(pathToUri(realpath(__DIR__ . '/../../../../fixtures/references.php'))), | 
					
						
							|  |  |  |             new Position(0, 0) | 
					
						
							|  |  |  |         )->wait(); | 
					
						
							| 
									
										
										
										
											2016-10-18 08:48:16 +00:00
										 |  |  |         $this->assertEquals([], $result); | 
					
						
							| 
									
										
										
										
											2016-10-11 08:26:46 +00:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-10-24 17:35:37 +00:00
										 |  |  |     public function testDefinitionEmptyResult() | 
					
						
							|  |  |  |     { | 
					
						
							| 
									
										
										
										
											2016-10-11 08:26:46 +00:00
										 |  |  |         // namespace keyword
 | 
					
						
							| 
									
										
										
										
											2016-11-14 09:25:44 +00:00
										 |  |  |         $result = $this->textDocument->definition( | 
					
						
							|  |  |  |             new TextDocumentIdentifier(pathToUri(realpath(__DIR__ . '/../../../../fixtures/references.php'))), | 
					
						
							| 
									
										
										
										
											2017-06-09 18:25:30 +00:00
										 |  |  |             new Position(1, 0) | 
					
						
							| 
									
										
										
										
											2016-11-14 09:25:44 +00:00
										 |  |  |         )->wait(); | 
					
						
							| 
									
										
										
										
											2016-10-18 08:48:16 +00:00
										 |  |  |         $this->assertEquals([], $result); | 
					
						
							| 
									
										
										
										
											2016-10-11 08:26:46 +00:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-11-19 00:59:57 +00:00
										 |  |  |     public function testDefinitionForSelfKeyword() | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         // echo self::TEST_CLASS_CONST;
 | 
					
						
							|  |  |  |         // Get definition for self
 | 
					
						
							|  |  |  |         $reference = $this->getReferenceLocations('TestClass')[0]; | 
					
						
							|  |  |  |         $result = $this->textDocument->definition( | 
					
						
							|  |  |  |             new TextDocumentIdentifier($reference->uri), | 
					
						
							|  |  |  |             $reference->range->start | 
					
						
							|  |  |  |         )->wait(); | 
					
						
							|  |  |  |         $this->assertEquals($this->getDefinitionLocation('TestClass'), $result); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-10-08 12:59:08 +00:00
										 |  |  |     public function testDefinitionForClassLike() | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         // $obj = new TestClass();
 | 
					
						
							|  |  |  |         // Get definition for TestClass
 | 
					
						
							| 
									
										
										
										
											2017-11-19 00:59:57 +00:00
										 |  |  |         $reference = $this->getReferenceLocations('TestClass')[1]; | 
					
						
							| 
									
										
										
										
											2016-11-14 09:25:44 +00:00
										 |  |  |         $result = $this->textDocument->definition( | 
					
						
							|  |  |  |             new TextDocumentIdentifier($reference->uri), | 
					
						
							|  |  |  |             $reference->range->start | 
					
						
							|  |  |  |         )->wait(); | 
					
						
							| 
									
										
										
										
											2016-10-18 08:48:16 +00:00
										 |  |  |         $this->assertEquals($this->getDefinitionLocation('TestClass'), $result); | 
					
						
							| 
									
										
										
										
											2016-10-08 12:59:08 +00:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-10-12 10:40:13 +00:00
										 |  |  |     public function testDefinitionForClassOnStaticMethodCall() | 
					
						
							|  |  |  |     { | 
					
						
							| 
									
										
										
										
											2016-10-19 10:31:32 +00:00
										 |  |  |         // TestClass::staticTestMethod();
 | 
					
						
							| 
									
										
										
										
											2016-10-12 10:40:13 +00:00
										 |  |  |         // Get definition for TestClass
 | 
					
						
							| 
									
										
										
										
											2017-11-19 00:59:57 +00:00
										 |  |  |         $reference = $this->getReferenceLocations('TestClass')[2]; | 
					
						
							| 
									
										
										
										
											2016-11-14 09:25:44 +00:00
										 |  |  |         $result = $this->textDocument->definition( | 
					
						
							|  |  |  |             new TextDocumentIdentifier($reference->uri), | 
					
						
							|  |  |  |             $reference->range->start | 
					
						
							|  |  |  |         )->wait(); | 
					
						
							| 
									
										
										
										
											2016-10-18 08:48:16 +00:00
										 |  |  |         $this->assertEquals($this->getDefinitionLocation('TestClass'), $result); | 
					
						
							| 
									
										
										
										
											2016-10-12 10:40:13 +00:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     public function testDefinitionForClassOnStaticPropertyFetch() | 
					
						
							|  |  |  |     { | 
					
						
							| 
									
										
										
										
											2016-10-18 08:48:16 +00:00
										 |  |  |         // echo TestClass::$staticTestProperty;
 | 
					
						
							| 
									
										
										
										
											2016-10-12 10:40:13 +00:00
										 |  |  |         // Get definition for TestClass
 | 
					
						
							| 
									
										
										
										
											2017-11-19 00:59:57 +00:00
										 |  |  |         $reference = $this->getReferenceLocations('TestClass')[3]; | 
					
						
							| 
									
										
										
										
											2016-11-14 09:25:44 +00:00
										 |  |  |         $result = $this->textDocument->definition( | 
					
						
							|  |  |  |             new TextDocumentIdentifier($reference->uri), | 
					
						
							|  |  |  |             $reference->range->start | 
					
						
							|  |  |  |         )->wait(); | 
					
						
							| 
									
										
										
										
											2016-10-18 08:48:16 +00:00
										 |  |  |         $this->assertEquals($this->getDefinitionLocation('TestClass'), $result); | 
					
						
							| 
									
										
										
										
											2016-10-12 10:40:13 +00:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     public function testDefinitionForClassOnConstFetch() | 
					
						
							|  |  |  |     { | 
					
						
							| 
									
										
										
										
											2016-10-18 08:48:16 +00:00
										 |  |  |         // TestClass::TEST_CLASS_CONST;
 | 
					
						
							| 
									
										
										
										
											2016-10-12 10:40:13 +00:00
										 |  |  |         // Get definition for TestClass
 | 
					
						
							| 
									
										
										
										
											2017-11-19 00:59:57 +00:00
										 |  |  |         $reference = $this->getReferenceLocations('TestClass')[4]; | 
					
						
							| 
									
										
										
										
											2016-11-14 09:25:44 +00:00
										 |  |  |         $result = $this->textDocument->definition( | 
					
						
							|  |  |  |             new TextDocumentIdentifier($reference->uri), | 
					
						
							|  |  |  |             $reference->range->start | 
					
						
							|  |  |  |         )->wait(); | 
					
						
							| 
									
										
										
										
											2016-10-18 08:48:16 +00:00
										 |  |  |         $this->assertEquals($this->getDefinitionLocation('TestClass'), $result); | 
					
						
							| 
									
										
										
										
											2016-10-12 10:40:13 +00:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-10-08 12:59:08 +00:00
										 |  |  |     public function testDefinitionForImplements() | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         // class TestClass implements TestInterface
 | 
					
						
							|  |  |  |         // Get definition for TestInterface
 | 
					
						
							| 
									
										
										
										
											2016-10-18 08:48:16 +00:00
										 |  |  |         $reference = $this->getReferenceLocations('TestInterface')[0]; | 
					
						
							| 
									
										
										
										
											2016-11-14 09:25:44 +00:00
										 |  |  |         $result = $this->textDocument->definition( | 
					
						
							|  |  |  |             new TextDocumentIdentifier($reference->uri), | 
					
						
							|  |  |  |             $reference->range->start | 
					
						
							|  |  |  |         )->wait(); | 
					
						
							| 
									
										
										
										
											2016-10-18 08:48:16 +00:00
										 |  |  |         $this->assertEquals($this->getDefinitionLocation('TestInterface'), $result); | 
					
						
							| 
									
										
										
										
											2016-10-08 12:59:08 +00:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     public function testDefinitionForClassConstants() | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         // echo TestClass::TEST_CLASS_CONST;
 | 
					
						
							|  |  |  |         // Get definition for TEST_CLASS_CONST
 | 
					
						
							| 
									
										
										
										
											2016-10-19 22:18:36 +00:00
										 |  |  |         $reference = $this->getReferenceLocations('TestClass::TEST_CLASS_CONST')[1]; | 
					
						
							| 
									
										
										
										
											2016-11-14 09:25:44 +00:00
										 |  |  |         $result = $this->textDocument->definition( | 
					
						
							|  |  |  |             new TextDocumentIdentifier($reference->uri), | 
					
						
							|  |  |  |             $reference->range->end | 
					
						
							|  |  |  |         )->wait(); | 
					
						
							| 
									
										
										
										
											2016-10-19 22:18:36 +00:00
										 |  |  |         $this->assertEquals($this->getDefinitionLocation('TestClass::TEST_CLASS_CONST'), $result); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     public function testDefinitionForClassConstantsOnSelf() | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         // echo self::TEST_CLASS_CONST;
 | 
					
						
							|  |  |  |         // Get definition for TEST_CLASS_CONST
 | 
					
						
							| 
									
										
										
										
											2016-10-18 08:48:16 +00:00
										 |  |  |         $reference = $this->getReferenceLocations('TestClass::TEST_CLASS_CONST')[0]; | 
					
						
							| 
									
										
										
										
											2016-11-14 09:25:44 +00:00
										 |  |  |         $result = $this->textDocument->definition( | 
					
						
							|  |  |  |             new TextDocumentIdentifier($reference->uri), | 
					
						
							|  |  |  |             $reference->range->end | 
					
						
							|  |  |  |         )->wait(); | 
					
						
							| 
									
										
										
										
											2016-10-18 08:48:16 +00:00
										 |  |  |         $this->assertEquals($this->getDefinitionLocation('TestClass::TEST_CLASS_CONST'), $result); | 
					
						
							| 
									
										
										
										
											2016-10-08 12:59:08 +00:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     public function testDefinitionForConstants() | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         // echo TEST_CONST;
 | 
					
						
							|  |  |  |         // Get definition for TEST_CONST
 | 
					
						
							| 
									
										
										
										
											2016-10-18 08:48:16 +00:00
										 |  |  |         $reference = $this->getReferenceLocations('TEST_CONST')[1]; | 
					
						
							| 
									
										
										
										
											2016-11-14 09:25:44 +00:00
										 |  |  |         $result = $this->textDocument->definition( | 
					
						
							|  |  |  |             new TextDocumentIdentifier($reference->uri), | 
					
						
							|  |  |  |             $reference->range->start | 
					
						
							|  |  |  |         )->wait(); | 
					
						
							| 
									
										
										
										
											2016-10-18 08:48:16 +00:00
										 |  |  |         $this->assertEquals($this->getDefinitionLocation('TEST_CONST'), $result); | 
					
						
							| 
									
										
										
										
											2016-10-08 12:59:08 +00:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     public function testDefinitionForStaticMethods() | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         // TestClass::staticTestMethod();
 | 
					
						
							|  |  |  |         // Get definition for staticTestMethod
 | 
					
						
							| 
									
										
										
										
											2016-10-18 08:48:16 +00:00
										 |  |  |         $reference = $this->getReferenceLocations('TestClass::staticTestMethod()')[0]; | 
					
						
							| 
									
										
										
										
											2016-11-14 09:25:44 +00:00
										 |  |  |         $result = $this->textDocument->definition( | 
					
						
							|  |  |  |             new TextDocumentIdentifier($reference->uri), | 
					
						
							|  |  |  |             $reference->range->end | 
					
						
							|  |  |  |         )->wait(); | 
					
						
							| 
									
										
										
										
											2016-10-18 08:48:16 +00:00
										 |  |  |         $this->assertEquals($this->getDefinitionLocation('TestClass::staticTestMethod()'), $result); | 
					
						
							| 
									
										
										
										
											2016-10-08 12:59:08 +00:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     public function testDefinitionForStaticProperties() | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         // echo TestClass::$staticTestProperty;
 | 
					
						
							|  |  |  |         // Get definition for staticTestProperty
 | 
					
						
							| 
									
										
										
										
											2016-10-18 08:48:16 +00:00
										 |  |  |         $reference = $this->getReferenceLocations('TestClass::staticTestProperty')[0]; | 
					
						
							| 
									
										
										
										
											2016-11-14 09:25:44 +00:00
										 |  |  |         $result = $this->textDocument->definition( | 
					
						
							|  |  |  |             new TextDocumentIdentifier($reference->uri), | 
					
						
							|  |  |  |             $reference->range->end | 
					
						
							|  |  |  |         )->wait(); | 
					
						
							| 
									
										
										
										
											2016-10-18 08:48:16 +00:00
										 |  |  |         $this->assertEquals($this->getDefinitionLocation('TestClass::staticTestProperty'), $result); | 
					
						
							| 
									
										
										
										
											2016-10-08 12:59:08 +00:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     public function testDefinitionForMethods() | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         // $obj->testMethod();
 | 
					
						
							|  |  |  |         // Get definition for testMethod
 | 
					
						
							| 
									
										
										
										
											2016-10-18 08:48:16 +00:00
										 |  |  |         $reference = $this->getReferenceLocations('TestClass::testMethod()')[0]; | 
					
						
							| 
									
										
										
										
											2016-11-14 09:25:44 +00:00
										 |  |  |         $result = $this->textDocument->definition( | 
					
						
							|  |  |  |             new TextDocumentIdentifier($reference->uri), | 
					
						
							|  |  |  |             $reference->range->end | 
					
						
							|  |  |  |         )->wait(); | 
					
						
							| 
									
										
										
										
											2016-10-18 08:48:16 +00:00
										 |  |  |         $this->assertEquals($this->getDefinitionLocation('TestClass::testMethod()'), $result); | 
					
						
							| 
									
										
										
										
											2016-10-08 12:59:08 +00:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-12-16 00:40:17 +00:00
										 |  |  |     public function testDefinitionForMethodOnChildClass() | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         // $child->testMethod();
 | 
					
						
							|  |  |  |         // Get definition for testMethod
 | 
					
						
							|  |  |  |         $reference = $this->getReferenceLocations('TestClass::testMethod()')[2]; | 
					
						
							|  |  |  |         $result = $this->textDocument->definition( | 
					
						
							|  |  |  |             new TextDocumentIdentifier($reference->uri), | 
					
						
							|  |  |  |             $reference->range->end | 
					
						
							|  |  |  |         )->wait(); | 
					
						
							|  |  |  |         $this->assertEquals($this->getDefinitionLocation('TestClass::testMethod()'), $result); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-10-08 12:59:08 +00:00
										 |  |  |     public function testDefinitionForProperties() | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         // echo $obj->testProperty;
 | 
					
						
							|  |  |  |         // Get definition for testProperty
 | 
					
						
							| 
									
										
										
										
											2016-10-19 22:10:47 +00:00
										 |  |  |         $reference = $this->getReferenceLocations('TestClass::testProperty')[1]; | 
					
						
							| 
									
										
										
										
											2016-11-14 09:25:44 +00:00
										 |  |  |         $result = $this->textDocument->definition( | 
					
						
							|  |  |  |             new TextDocumentIdentifier($reference->uri), | 
					
						
							|  |  |  |             $reference->range->end | 
					
						
							|  |  |  |         )->wait(); | 
					
						
							| 
									
										
										
										
											2016-10-19 22:10:47 +00:00
										 |  |  |         $this->assertEquals($this->getDefinitionLocation('TestClass::testProperty'), $result); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     public function testDefinitionForPropertiesOnThis() | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         // $this->testProperty = $testParameter;
 | 
					
						
							|  |  |  |         // Get definition for testProperty
 | 
					
						
							| 
									
										
										
										
											2016-10-18 08:48:16 +00:00
										 |  |  |         $reference = $this->getReferenceLocations('TestClass::testProperty')[0]; | 
					
						
							| 
									
										
										
										
											2016-11-14 09:25:44 +00:00
										 |  |  |         $result = $this->textDocument->definition( | 
					
						
							|  |  |  |             new TextDocumentIdentifier($reference->uri), | 
					
						
							|  |  |  |             $reference->range->end | 
					
						
							|  |  |  |         )->wait(); | 
					
						
							| 
									
										
										
										
											2016-10-18 08:48:16 +00:00
										 |  |  |         $this->assertEquals($this->getDefinitionLocation('TestClass::testProperty'), $result); | 
					
						
							| 
									
										
										
										
											2016-10-08 12:59:08 +00:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     public function testDefinitionForVariables() | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         // echo $var;
 | 
					
						
							|  |  |  |         // Get definition for $var
 | 
					
						
							| 
									
										
										
										
											2016-10-18 08:48:16 +00:00
										 |  |  |         $uri = pathToUri(realpath(__DIR__ . '/../../../../fixtures/references.php')); | 
					
						
							| 
									
										
										
										
											2016-11-14 09:25:44 +00:00
										 |  |  |         $result = $this->textDocument->definition( | 
					
						
							|  |  |  |             new TextDocumentIdentifier($uri), | 
					
						
							|  |  |  |             new Position(13, 7) | 
					
						
							|  |  |  |         )->wait(); | 
					
						
							| 
									
										
										
										
											2016-10-18 08:48:16 +00:00
										 |  |  |         $this->assertEquals(new Location($uri, new Range(new Position(12, 0), new Position(12, 10))), $result); | 
					
						
							| 
									
										
										
										
											2016-10-08 12:59:08 +00:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     public function testDefinitionForParamTypeHints() | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         // function whatever(TestClass $param) {
 | 
					
						
							|  |  |  |         // Get definition for TestClass
 | 
					
						
							| 
									
										
										
										
											2017-11-19 00:59:57 +00:00
										 |  |  |         $reference = $this->getReferenceLocations('TestClass')[5]; | 
					
						
							| 
									
										
										
										
											2016-11-14 09:25:44 +00:00
										 |  |  |         $result = $this->textDocument->definition( | 
					
						
							|  |  |  |             new TextDocumentIdentifier($reference->uri), | 
					
						
							|  |  |  |             $reference->range->start | 
					
						
							|  |  |  |         )->wait(); | 
					
						
							| 
									
										
										
										
											2016-10-18 08:48:16 +00:00
										 |  |  |         $this->assertEquals($this->getDefinitionLocation('TestClass'), $result); | 
					
						
							| 
									
										
										
										
											2016-10-08 12:59:08 +00:00
										 |  |  |     } | 
					
						
							| 
									
										
										
										
											2016-10-18 08:48:16 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-10-08 12:59:08 +00:00
										 |  |  |     public function testDefinitionForReturnTypeHints() | 
					
						
							|  |  |  |     { | 
					
						
							| 
									
										
										
										
											2016-10-18 08:48:16 +00:00
										 |  |  |         // function whatever(TestClass $param): TestClass {
 | 
					
						
							| 
									
										
										
										
											2016-10-08 12:59:08 +00:00
										 |  |  |         // Get definition for TestClass
 | 
					
						
							| 
									
										
										
										
											2017-11-19 00:59:57 +00:00
										 |  |  |         $reference = $this->getReferenceLocations('TestClass')[6]; | 
					
						
							| 
									
										
										
										
											2016-11-14 09:25:44 +00:00
										 |  |  |         $result = $this->textDocument->definition( | 
					
						
							|  |  |  |             new TextDocumentIdentifier($reference->uri), | 
					
						
							|  |  |  |             $reference->range->start | 
					
						
							|  |  |  |         )->wait(); | 
					
						
							| 
									
										
										
										
											2016-10-18 08:48:16 +00:00
										 |  |  |         $this->assertEquals($this->getDefinitionLocation('TestClass'), $result); | 
					
						
							| 
									
										
										
										
											2016-10-08 12:59:08 +00:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-10-21 14:51:11 +00:00
										 |  |  |     public function testDefinitionForMethodReturnTypeHints() | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         // public function testMethod($testParameter): TestInterface
 | 
					
						
							|  |  |  |         // Get definition for TestInterface
 | 
					
						
							|  |  |  |         $reference = $this->getReferenceLocations('TestInterface')[1]; | 
					
						
							| 
									
										
										
										
											2016-11-14 09:25:44 +00:00
										 |  |  |         $result = $this->textDocument->definition( | 
					
						
							|  |  |  |             new TextDocumentIdentifier($reference->uri), | 
					
						
							|  |  |  |             $reference->range->start | 
					
						
							|  |  |  |         )->wait(); | 
					
						
							| 
									
										
										
										
											2016-10-21 14:51:11 +00:00
										 |  |  |         $this->assertEquals($this->getDefinitionLocation('TestInterface'), $result); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-10-08 12:59:08 +00:00
										 |  |  |     public function testDefinitionForParams() | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         // echo $param;
 | 
					
						
							|  |  |  |         // Get definition for $param
 | 
					
						
							| 
									
										
										
										
											2016-10-18 08:48:16 +00:00
										 |  |  |         $uri = pathToUri(realpath(__DIR__ . '/../../../../fixtures/references.php')); | 
					
						
							| 
									
										
										
										
											2016-11-14 09:25:44 +00:00
										 |  |  |         $result = $this->textDocument->definition( | 
					
						
							|  |  |  |             new TextDocumentIdentifier($uri), | 
					
						
							|  |  |  |             new Position(22, 13) | 
					
						
							|  |  |  |         )->wait(); | 
					
						
							| 
									
										
										
										
											2016-10-19 10:31:32 +00:00
										 |  |  |         $this->assertEquals(new Location($uri, new Range(new Position(21, 18), new Position(21, 34))), $result); | 
					
						
							| 
									
										
										
										
											2016-10-08 12:59:08 +00:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     public function testDefinitionForUsedVariables() | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         // echo $var;
 | 
					
						
							|  |  |  |         // Get definition for $var
 | 
					
						
							| 
									
										
										
										
											2016-10-18 08:48:16 +00:00
										 |  |  |         $uri = pathToUri(realpath(__DIR__ . '/../../../../fixtures/references.php')); | 
					
						
							| 
									
										
										
										
											2016-11-14 09:25:44 +00:00
										 |  |  |         $result = $this->textDocument->definition( | 
					
						
							|  |  |  |             new TextDocumentIdentifier($uri), | 
					
						
							|  |  |  |             new Position(26, 11) | 
					
						
							|  |  |  |         )->wait(); | 
					
						
							| 
									
										
										
										
											2016-10-19 10:31:32 +00:00
										 |  |  |         $this->assertEquals(new Location($uri, new Range(new Position(25, 22), new Position(25, 26))), $result); | 
					
						
							| 
									
										
										
										
											2016-10-08 12:59:08 +00:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     public function testDefinitionForFunctions() | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         // test_function();
 | 
					
						
							|  |  |  |         // Get definition for test_function
 | 
					
						
							| 
									
										
										
										
											2016-10-18 08:48:16 +00:00
										 |  |  |         $reference = $this->getReferenceLocations('test_function()')[0]; | 
					
						
							| 
									
										
										
										
											2016-11-14 09:25:44 +00:00
										 |  |  |         $result = $this->textDocument->definition( | 
					
						
							|  |  |  |             new TextDocumentIdentifier($reference->uri), | 
					
						
							|  |  |  |             $reference->range->start | 
					
						
							|  |  |  |         )->wait(); | 
					
						
							| 
									
										
										
										
											2016-10-18 08:48:16 +00:00
										 |  |  |         $this->assertEquals($this->getDefinitionLocation('test_function()'), $result); | 
					
						
							| 
									
										
										
										
											2016-10-08 12:59:08 +00:00
										 |  |  |     } | 
					
						
							| 
									
										
										
										
											2016-10-26 09:47:02 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |     public function testDefinitionForUseFunctions() | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         // use function test_function;
 | 
					
						
							|  |  |  |         // Get definition for test_function
 | 
					
						
							|  |  |  |         $reference = $this->getReferenceLocations('test_function()')[1]; | 
					
						
							| 
									
										
										
										
											2016-11-14 09:25:44 +00:00
										 |  |  |         $result = $this->textDocument->definition( | 
					
						
							|  |  |  |             new TextDocumentIdentifier($reference->uri), | 
					
						
							|  |  |  |             $reference->range->start | 
					
						
							|  |  |  |         )->wait(); | 
					
						
							| 
									
										
										
										
											2016-10-26 09:47:02 +00:00
										 |  |  |         $this->assertEquals($this->getDefinitionLocation('test_function()'), $result); | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2016-10-26 18:56:02 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |     public function testDefinitionForInstanceOf() | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         // if ($abc instanceof TestInterface) {
 | 
					
						
							|  |  |  |         // Get definition for TestInterface
 | 
					
						
							|  |  |  |         $reference = $this->getReferenceLocations('TestInterface')[2]; | 
					
						
							| 
									
										
										
										
											2016-11-14 09:25:44 +00:00
										 |  |  |         $result = $this->textDocument->definition( | 
					
						
							|  |  |  |             new TextDocumentIdentifier($reference->uri), | 
					
						
							|  |  |  |             $reference->range->start | 
					
						
							|  |  |  |         )->wait(); | 
					
						
							| 
									
										
										
										
											2016-10-26 18:56:02 +00:00
										 |  |  |         $this->assertEquals($this->getDefinitionLocation('TestInterface'), $result); | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2016-11-18 14:22:24 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |     public function testDefinitionForNestedMethodCall() | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         // $obj->testProperty->testMethod();
 | 
					
						
							|  |  |  |         // Get definition for testMethod
 | 
					
						
							|  |  |  |         $reference = $this->getReferenceLocations('TestClass::testMethod()')[1]; | 
					
						
							|  |  |  |         $result = $this->textDocument->definition( | 
					
						
							|  |  |  |             new TextDocumentIdentifier($reference->uri), | 
					
						
							|  |  |  |             $reference->range->end | 
					
						
							|  |  |  |         )->wait(); | 
					
						
							|  |  |  |         $this->assertEquals($this->getDefinitionLocation('TestClass::testMethod()'), $result); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     public function testDefinitionForPropertyFetchOnArrayDimFetch() | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         // TestClass::$staticTestProperty[123]->testProperty;
 | 
					
						
							|  |  |  |         // Get definition for testProperty
 | 
					
						
							|  |  |  |         $reference = $this->getReferenceLocations('TestClass::testProperty')[3]; | 
					
						
							|  |  |  |         $result = $this->textDocument->definition( | 
					
						
							|  |  |  |             new TextDocumentIdentifier($reference->uri), | 
					
						
							|  |  |  |             $reference->range->end | 
					
						
							|  |  |  |         )->wait(); | 
					
						
							|  |  |  |         $this->assertEquals($this->getDefinitionLocation('TestClass::testProperty'), $result); | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2016-10-08 12:59:08 +00:00
										 |  |  | } |