1
0
Fork 0
php-language-server/tests/ClientHandlerTest.php

49 lines
1.7 KiB
PHP
Raw Normal View History

2016-10-31 10:47:21 +00:00
<?php
2019-06-18 08:59:40 +00:00
declare(strict_types=1);
2016-10-31 10:47:21 +00:00
namespace LanguageServer\Tests;
2019-06-18 08:59:40 +00:00
use AdvancedJsonRpc;
use Amp\Loop;
2016-10-31 10:47:21 +00:00
use LanguageServer\ClientHandler;
2019-06-18 08:59:40 +00:00
use LanguageServer\Event\MessageEvent;
use LanguageServer\Message;
2019-06-18 08:59:40 +00:00
use PHPUnit\Framework\TestCase;
2016-10-31 10:47:21 +00:00
class ClientHandlerTest extends TestCase
{
public function testRequest()
{
2019-06-18 08:59:40 +00:00
Loop::run(function () {
$reader = new MockProtocolStream;
$writer = new MockProtocolStream;
$handler = new ClientHandler($reader, $writer);
$writer->addOneTimeListener('message', function (MessageEvent $messageEvent) use ($reader) {
$msg = $messageEvent->getMessage();
// Respond to request
Loop::defer(function () use ($reader, $msg) {
yield from $reader->write(new Message(new AdvancedJsonRpc\SuccessResponse($msg->body->id, 'pong')));
});
});
$result = yield from $handler->request('testMethod', ['ping']);
2016-10-31 10:47:21 +00:00
$this->assertEquals('pong', $result);
2019-06-18 08:59:40 +00:00
// No event listeners
$this->assertEquals([], $reader->getListeners('message'));
$this->assertEquals([], $writer->getListeners('message'));
});
2016-10-31 10:47:21 +00:00
}
public function testNotify()
{
2019-06-18 08:59:40 +00:00
Loop::run(function () {
$reader = new MockProtocolStream;
$writer = new MockProtocolStream;
$handler = new ClientHandler($reader, $writer);
yield from $handler->notify('testMethod', ['ping']);
// No event listeners
$this->assertEquals([], $reader->getListeners('message'));
$this->assertEquals([], $writer->getListeners('message'));
});
2016-10-31 10:47:21 +00:00
}
}