2016-08-25 13:27:14 +00:00
|
|
|
<?php
|
2019-06-18 08:59:40 +00:00
|
|
|
declare(strict_types=1);
|
2016-08-25 13:27:14 +00:00
|
|
|
|
|
|
|
namespace LanguageServer\Tests;
|
|
|
|
|
2019-06-18 08:59:40 +00:00
|
|
|
use Amp\Deferred;
|
|
|
|
use Amp\Delayed;
|
|
|
|
use Amp\Loop;
|
|
|
|
use LanguageServer\{Event\MessageEvent, ProtocolReader, ProtocolWriter};
|
2018-09-09 12:37:35 +00:00
|
|
|
use LanguageServer\Message;
|
2019-06-18 08:59:40 +00:00
|
|
|
use League\Event\Emitter;
|
|
|
|
use League\Event\Event;
|
2016-08-25 13:27:14 +00:00
|
|
|
|
|
|
|
/**
|
|
|
|
* A fake duplex protocol stream
|
|
|
|
*/
|
2016-10-31 10:47:21 +00:00
|
|
|
class MockProtocolStream extends Emitter implements ProtocolReader, ProtocolWriter
|
2016-08-25 13:27:14 +00:00
|
|
|
{
|
|
|
|
/**
|
|
|
|
* Sends a Message to the client
|
|
|
|
*
|
|
|
|
* @param Message $msg
|
|
|
|
* @return void
|
|
|
|
*/
|
2019-06-18 08:59:40 +00:00
|
|
|
public function write(Message $msg): \Generator
|
2016-08-25 13:27:14 +00:00
|
|
|
{
|
2019-06-18 08:59:40 +00:00
|
|
|
Loop::defer(function () use ($msg) {
|
|
|
|
$this->emit(new MessageEvent('message', Message::parse((string)$msg)));
|
2016-11-14 09:25:44 +00:00
|
|
|
});
|
2019-06-18 08:59:40 +00:00
|
|
|
yield new Delayed(0);
|
2016-08-25 13:27:14 +00:00
|
|
|
}
|
|
|
|
}
|