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\BufferStream ;
2015-08-17 17:00:26 -07:00
class BufferStreamTest extends \PHPUnit_Framework_TestCase
{
public function testHasMetadata ()
{
$b = new BufferStream ( 10 );
$this -> assertTrue ( $b -> isReadable ());
$this -> assertTrue ( $b -> isWritable ());
$this -> assertFalse ( $b -> isSeekable ());
$this -> assertEquals ( null , $b -> getMetadata ( 'foo' ));
$this -> assertEquals ( 10 , $b -> getMetadata ( 'hwm' ));
$this -> assertEquals ([], $b -> getMetadata ());
}
public function testRemovesReadDataFromBuffer ()
{
$b = new BufferStream ();
$this -> assertEquals ( 3 , $b -> write ( 'foo' ));
$this -> assertEquals ( 3 , $b -> getSize ());
$this -> assertFalse ( $b -> eof ());
$this -> assertEquals ( 'foo' , $b -> read ( 10 ));
$this -> assertTrue ( $b -> eof ());
$this -> assertEquals ( '' , $b -> read ( 10 ));
}
2015-08-27 12:03:05 -07:00
/**
* @ expectedException \RuntimeException
* @ expectedExceptionMessage Cannot determine the position of a BufferStream
*/
2015-08-17 17:00:26 -07:00
public function testCanCastToStringOrGetContents ()
{
$b = new BufferStream ();
$b -> write ( 'foo' );
$b -> write ( 'baz' );
$this -> assertEquals ( 'foo' , $b -> read ( 3 ));
$b -> write ( 'bar' );
$this -> assertEquals ( 'bazbar' , ( string ) $b );
2015-08-27 12:03:05 -07:00
$b -> tell ();
2015-08-17 17:00:26 -07:00
}
public function testDetachClearsBuffer ()
{
$b = new BufferStream ();
$b -> write ( 'foo' );
$b -> detach ();
$this -> assertTrue ( $b -> eof ());
$this -> assertEquals ( 3 , $b -> write ( 'abc' ));
$this -> assertEquals ( 'abc' , $b -> read ( 10 ));
}
public function testExceedingHighwaterMarkReturnsFalseButStillBuffers ()
{
$b = new BufferStream ( 5 );
$this -> assertEquals ( 3 , $b -> write ( 'hi ' ));
$this -> assertFalse ( $b -> write ( 'hello' ));
$this -> assertEquals ( 'hi hello' , ( string ) $b );
$this -> assertEquals ( 4 , $b -> write ( 'test' ));
}
}