You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
64 lines
1.8 KiB
64 lines
1.8 KiB
<?php |
|
namespace GuzzleHttp\Tests\Psr7; |
|
|
|
use GuzzleHttp\Psr7\LazyOpenStream; |
|
|
|
class LazyOpenStreamTest extends \PHPUnit_Framework_TestCase |
|
{ |
|
private $fname; |
|
|
|
public function setup() |
|
{ |
|
$this->fname = tempnam('/tmp', 'tfile'); |
|
|
|
if (file_exists($this->fname)) { |
|
unlink($this->fname); |
|
} |
|
} |
|
|
|
public function tearDown() |
|
{ |
|
if (file_exists($this->fname)) { |
|
unlink($this->fname); |
|
} |
|
} |
|
|
|
public function testOpensLazily() |
|
{ |
|
$l = new LazyOpenStream($this->fname, 'w+'); |
|
$l->write('foo'); |
|
$this->assertInternalType('array', $l->getMetadata()); |
|
$this->assertFileExists($this->fname); |
|
$this->assertEquals('foo', file_get_contents($this->fname)); |
|
$this->assertEquals('foo', (string) $l); |
|
} |
|
|
|
public function testProxiesToFile() |
|
{ |
|
file_put_contents($this->fname, 'foo'); |
|
$l = new LazyOpenStream($this->fname, 'r'); |
|
$this->assertEquals('foo', $l->read(4)); |
|
$this->assertTrue($l->eof()); |
|
$this->assertEquals(3, $l->tell()); |
|
$this->assertTrue($l->isReadable()); |
|
$this->assertTrue($l->isSeekable()); |
|
$this->assertFalse($l->isWritable()); |
|
$l->seek(1); |
|
$this->assertEquals('oo', $l->getContents()); |
|
$this->assertEquals('foo', (string) $l); |
|
$this->assertEquals(3, $l->getSize()); |
|
$this->assertInternalType('array', $l->getMetadata()); |
|
$l->close(); |
|
} |
|
|
|
public function testDetachesUnderlyingStream() |
|
{ |
|
file_put_contents($this->fname, 'foo'); |
|
$l = new LazyOpenStream($this->fname, 'r'); |
|
$r = $l->detach(); |
|
$this->assertInternalType('resource', $r); |
|
fseek($r, 0); |
|
$this->assertEquals('foo', stream_get_contents($r)); |
|
fclose($r); |
|
} |
|
}
|
|
|