public function testWriteInDrain()
{
$stream = fopen('php://temp', 'r+');
$loop = $this->createWriteableLoopMock();
$loop->preventWrites = true;
$buffer = new Buffer($stream, $loop);
$buffer->softLimit = 2;
$buffer->on('error', $this->expectCallableNever());
$buffer->once('drain', function ($buffer) {
$buffer->listening = false;
$buffer->write("bar\n");
});
$this->assertFalse($buffer->write("foo"));
$loop->preventWrites = false;
$buffer->listening = false;
$buffer->write("\n");
fseek($stream, 0);
$this->assertSame("foo\nbar\n", stream_get_contents($stream));
}