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);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								}
							 |