| 
									
										
										
										
											2016-10-11 23:45:15 +00:00
										 |  |  | <?php | 
					
						
							|  |  |  | declare(strict_types = 1); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | namespace LanguageServer\Tests\Server\TextDocument\References; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-06-09 18:25:30 +00:00
										 |  |  | use LanguageServer\{ | 
					
						
							|  |  |  |     LanguageClient, PhpDocumentLoader, Server, DefinitionResolver | 
					
						
							|  |  |  | }; | 
					
						
							| 
									
										
										
										
											2016-12-08 01:33:48 +00:00
										 |  |  | use LanguageServer\ContentRetriever\FileSystemContentRetriever; | 
					
						
							| 
									
										
										
										
											2017-06-09 18:25:30 +00:00
										 |  |  | use LanguageServer\Index\{ | 
					
						
							|  |  |  |     DependenciesIndex, Index, ProjectIndex | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | use LanguageServer\Protocol\{ | 
					
						
							|  |  |  |     Location, Position, Range, ReferenceContext, TextDocumentIdentifier | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | use LanguageServer\Tests\MockProtocolStream; | 
					
						
							| 
									
										
										
										
											2016-10-18 21:09:51 +00:00
										 |  |  | use LanguageServer\Tests\Server\ServerTestCase; | 
					
						
							| 
									
										
										
										
											2016-10-11 23:45:15 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-10-18 21:09:51 +00:00
										 |  |  | class GlobalFallbackTest extends ServerTestCase | 
					
						
							| 
									
										
										
										
											2016-10-11 23:45:15 +00:00
										 |  |  | { | 
					
						
							|  |  |  |     public function setUp() | 
					
						
							|  |  |  |     { | 
					
						
							| 
									
										
										
										
											2016-12-13 00:51:02 +00:00
										 |  |  |         $projectIndex         = new ProjectIndex(new Index, new DependenciesIndex); | 
					
						
							| 
									
										
										
										
											2017-01-25 00:38:11 +00:00
										 |  |  |         $projectIndex->setComplete(); | 
					
						
							| 
									
										
										
										
											2016-12-13 00:51:02 +00:00
										 |  |  |         $definitionResolver   = new DefinitionResolver($projectIndex); | 
					
						
							|  |  |  |         $client               = new LanguageClient(new MockProtocolStream, new MockProtocolStream); | 
					
						
							|  |  |  |         $this->documentLoader = new PhpDocumentLoader(new FileSystemContentRetriever, $projectIndex, $definitionResolver); | 
					
						
							|  |  |  |         $this->textDocument   = new Server\TextDocument($this->documentLoader, $definitionResolver, $client, $projectIndex); | 
					
						
							|  |  |  |         $this->documentLoader->open('global_fallback', file_get_contents(__DIR__ . '/../../../../fixtures/global_fallback.php')); | 
					
						
							|  |  |  |         $this->documentLoader->open('global_symbols', file_get_contents(__DIR__ . '/../../../../fixtures/global_symbols.php')); | 
					
						
							| 
									
										
										
										
											2016-10-11 23:45:15 +00:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     public function testClassDoesNotFallback() | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         // class TestClass implements TestInterface
 | 
					
						
							|  |  |  |         // Get references for TestClass
 | 
					
						
							| 
									
										
										
										
											2016-11-14 09:25:44 +00:00
										 |  |  |         $result = $this->textDocument->references( | 
					
						
							|  |  |  |             new ReferenceContext, | 
					
						
							|  |  |  |             new TextDocumentIdentifier('global_symbols'), | 
					
						
							|  |  |  |             new Position(6, 9) | 
					
						
							|  |  |  |         )->wait(); | 
					
						
							| 
									
										
										
										
											2016-10-11 23:45:15 +00:00
										 |  |  |         $this->assertEquals([], $result); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     public function testFallsBackForConstants() | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         // const TEST_CONST = 123;
 | 
					
						
							|  |  |  |         // Get references for TEST_CONST
 | 
					
						
							| 
									
										
										
										
											2016-11-14 09:25:44 +00:00
										 |  |  |         $result = $this->textDocument->references( | 
					
						
							|  |  |  |             new ReferenceContext, | 
					
						
							|  |  |  |             new TextDocumentIdentifier('global_symbols'), | 
					
						
							|  |  |  |             new Position(9, 13) | 
					
						
							|  |  |  |         )->wait(); | 
					
						
							| 
									
										
										
										
											2016-10-18 08:48:16 +00:00
										 |  |  |         $this->assertEquals([new Location('global_fallback', new Range(new Position(6, 5), new Position(6, 15)))], $result); | 
					
						
							| 
									
										
										
										
											2016-10-11 23:45:15 +00:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     public function testFallsBackForFunctions() | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         // function test_function()
 | 
					
						
							|  |  |  |         // Get references for test_function
 | 
					
						
							| 
									
										
										
										
											2016-11-14 09:25:44 +00:00
										 |  |  |         $result = $this->textDocument->references( | 
					
						
							|  |  |  |             new ReferenceContext, | 
					
						
							|  |  |  |             new TextDocumentIdentifier('global_symbols'), | 
					
						
							|  |  |  |             new Position(78, 16) | 
					
						
							|  |  |  |         )->wait(); | 
					
						
							| 
									
										
										
										
											2016-10-18 08:48:16 +00:00
										 |  |  |         $this->assertEquals([new Location('global_fallback', new Range(new Position(5, 0), new Position(5, 13)))], $result); | 
					
						
							| 
									
										
										
										
											2016-10-11 23:45:15 +00:00
										 |  |  |     } | 
					
						
							|  |  |  | } |