44 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			PHP
		
	
	
		
		
			
		
	
	
			44 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			PHP
		
	
	
| 
								 | 
							
								<?php
							 | 
						||
| 
								 | 
							
								declare(strict_types = 1);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								namespace LanguageServer\Tests;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								use PHPUnit\Framework\TestCase;
							 | 
						||
| 
								 | 
							
								use LanguageServer\ClientHandler;
							 | 
						||
| 
								 | 
							
								use LanguageServer\Protocol\Message;
							 | 
						||
| 
								 | 
							
								use AdvancedJsonRpc;
							 | 
						||
| 
								 | 
							
								use Sabre\Event\Loop;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class ClientHandlerTest extends TestCase
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								    public function testRequest()
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        $reader = new MockProtocolStream;
							 | 
						||
| 
								 | 
							
								        $writer = new MockProtocolStream;
							 | 
						||
| 
								 | 
							
								        $handler = new ClientHandler($reader, $writer);
							 | 
						||
| 
								 | 
							
								        $writer->once('message', function (Message $msg) use ($reader) {
							 | 
						||
| 
								 | 
							
								            // Respond to request
							 | 
						||
| 
								 | 
							
								            Loop\setTimeout(function () use ($reader, $msg) {
							 | 
						||
| 
								 | 
							
								                $reader->write(new Message(new AdvancedJsonRpc\SuccessResponse($msg->body->id, 'pong')));
							 | 
						||
| 
								 | 
							
								            }, 0);
							 | 
						||
| 
								 | 
							
								        });
							 | 
						||
| 
								 | 
							
								        $handler->request('testMethod', ['ping'])->then(function ($result) {
							 | 
						||
| 
								 | 
							
								            $this->assertEquals('pong', $result);
							 | 
						||
| 
								 | 
							
								        })->wait();
							 | 
						||
| 
								 | 
							
								        // No event listeners
							 | 
						||
| 
								 | 
							
								        $this->assertEquals([], $reader->listeners('message'));
							 | 
						||
| 
								 | 
							
								        $this->assertEquals([], $writer->listeners('message'));
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    public function testNotify()
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        $reader = new MockProtocolStream;
							 | 
						||
| 
								 | 
							
								        $writer = new MockProtocolStream;
							 | 
						||
| 
								 | 
							
								        $handler = new ClientHandler($reader, $writer);
							 | 
						||
| 
								 | 
							
								        $handler->notify('testMethod', ['ping'])->wait();
							 | 
						||
| 
								 | 
							
								        // No event listeners
							 | 
						||
| 
								 | 
							
								        $this->assertEquals([], $reader->listeners('message'));
							 | 
						||
| 
								 | 
							
								        $this->assertEquals([], $writer->listeners('message'));
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								}
							 |