2015-08-17 17:00:26 -07:00
< ? php
2015-08-27 12:03:05 -07:00
namespace GuzzleHttp\Tests\Psr7 ;
2015-08-17 17:00:26 -07:00
2015-08-27 12:03:05 -07:00
use GuzzleHttp\Psr7\LazyOpenStream ;
2015-08-17 17:00:26 -07:00
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 );
}
}