/**
* @dataProvider endpointProvider
*/
public function testSocketWritesAndReadsDataCorrectly($endpoint)
{
$this->simulate(function (SimulationInterface $sim) use($endpoint) {
$loop = $sim->getLoop();
$server = new SocketListener($endpoint, $loop);
$server->on('connect', function (SocketListenerInterface $server, SocketInterface $conn) use($sim) {
$conn->on('data', function (SocketInterface $conn, $data) use($server, $sim) {
$sim->expect('data', $data);
$conn->write('secret answer!');
$server->close();
});
});
$server->on('error', $this->expectCallableNever());
$server->on('close', function () use($sim) {
$sim->expect('close');
});
$client = new Socket($endpoint, $loop);
$client->on('data', function (SocketInterface $conn, $data) use($loop, $sim) {
$sim->expect('data', $data);
$conn->close();
$sim->done();
});
$client->on('error', $this->expectCallableNever());
$client->on('close', function () use($sim) {
$sim->expect('close');
});
$client->write('secret question!');
})->expect([['data', 'secret question!'], ['close'], ['data', 'secret answer!'], ['close']]);
}