public function testUsesProvidedConstructorArguments()
{
$server = ['foo' => 'bar', 'baz' => 'bat'];
$server['server'] = true;
$files = ['files' => new UploadedFile('php://temp', 0, 0)];
$uri = new Uri('http://example.com');
$method = 'POST';
$headers = ['host' => ['example.com']];
$request = new ServerRequest($server, $files, $uri, $method, 'php://memory', $headers);
$this->assertEquals($server, $request->getServerParams());
$this->assertEquals($files, $request->getUploadedFiles());
$this->assertSame($uri, $request->getUri());
$this->assertEquals($method, $request->getMethod());
$this->assertEquals($headers, $request->getHeaders());
$body = $request->getBody();
$r = new ReflectionProperty($body, 'stream');
$r->setAccessible(true);
$stream = $r->getValue($body);
$this->assertEquals('php://memory', $stream);
}