public function testListenPassesCallableArgumentToCallback()
{
$phpunit = $this;
$invoked = false;
$request = $this->request;
$response = $this->response;
$this->response->expects($this->once())->method('getHeaders')->will($this->returnValue([]));
$final = function ($req, $res, $err = null) use($phpunit, $request, $response, &$invoked) {
$phpunit->assertSame($request, $req);
$phpunit->assertSame($response, $res);
$invoked = true;
};
$callback = function ($req, $res, callable $final = null) use($phpunit) {
if (!$final) {
$phpunit->fail('No final callable passed!');
}
$final($req, $res);
};
$server = Server::createServerFromRequest($callback, $this->request, $this->response);
$server->listen($final);
ob_end_flush();
$this->assertTrue($invoked);
}