33 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			PHP
		
	
	
		
		
			
		
	
	
			33 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			PHP
		
	
	
|  | <?php | ||
|  | declare(strict_types = 1); | ||
|  | 
 | ||
|  | namespace LanguageServer\Tests; | ||
|  | 
 | ||
|  | use PHPUnit\Framework\TestCase; | ||
|  | use LanguageServer\{LanguageServer, ProtocolStreamReader, ProtocolStreamWriter}; | ||
|  | use LanguageServer\Protocol\Message; | ||
|  | use AdvancedJsonRpc\{Request as RequestBody, Response as ResponseBody}; | ||
|  | use Sabre\Event\Loop; | ||
|  | 
 | ||
|  | class ProtocolStreamReaderTest extends TestCase | ||
|  | { | ||
|  |     public function testParsingWorksAndListenerIsCalled() | ||
|  |     { | ||
|  |         $tmpfile = tempnam('', ''); | ||
|  |         $writeHandle = fopen($tmpfile, 'w'); | ||
|  |         $reader = new ProtocolStreamReader(fopen($tmpfile, 'r')); | ||
|  |         $msg = null; | ||
|  |         $reader->on('message', function (Message $message) use (&$msg) { | ||
|  |             $msg = $message; | ||
|  |         }); | ||
|  |         $ret = fwrite($writeHandle, (string)new Message(new RequestBody(1, 'aMethod', ['arg' => 'Hello World']))); | ||
|  |         Loop\tick(); | ||
|  |         $this->assertNotNull($msg); | ||
|  |         $this->assertInstanceOf(Message::class, $msg); | ||
|  |         $this->assertInstanceOf(RequestBody::class, $msg->body); | ||
|  |         $this->assertEquals(1, $msg->body->id); | ||
|  |         $this->assertEquals('aMethod', $msg->body->method); | ||
|  |         $this->assertEquals((object)['arg' => 'Hello World'], $msg->body->params); | ||
|  |     } | ||
|  | } |