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.
72 lines
2.1 KiB
72 lines
2.1 KiB
<?php |
|
namespace GuzzleHttp\Tests\Psr7; |
|
|
|
use GuzzleHttp\Psr7\LimitStream; |
|
use GuzzleHttp\Psr7\PumpStream; |
|
use GuzzleHttp\Psr7; |
|
|
|
class PumpStreamTest extends \PHPUnit_Framework_TestCase |
|
{ |
|
public function testHasMetadataAndSize() |
|
{ |
|
$p = new PumpStream(function () {}, [ |
|
'metadata' => ['foo' => 'bar'], |
|
'size' => 100 |
|
]); |
|
|
|
$this->assertEquals('bar', $p->getMetadata('foo')); |
|
$this->assertEquals(['foo' => 'bar'], $p->getMetadata()); |
|
$this->assertEquals(100, $p->getSize()); |
|
} |
|
|
|
public function testCanReadFromCallable() |
|
{ |
|
$p = Psr7\stream_for(function ($size) { |
|
return 'a'; |
|
}); |
|
$this->assertEquals('a', $p->read(1)); |
|
$this->assertEquals(1, $p->tell()); |
|
$this->assertEquals('aaaaa', $p->read(5)); |
|
$this->assertEquals(6, $p->tell()); |
|
} |
|
|
|
public function testStoresExcessDataInBuffer() |
|
{ |
|
$called = []; |
|
$p = Psr7\stream_for(function ($size) use (&$called) { |
|
$called[] = $size; |
|
return 'abcdef'; |
|
}); |
|
$this->assertEquals('a', $p->read(1)); |
|
$this->assertEquals('b', $p->read(1)); |
|
$this->assertEquals('cdef', $p->read(4)); |
|
$this->assertEquals('abcdefabc', $p->read(9)); |
|
$this->assertEquals([1, 9, 3], $called); |
|
} |
|
|
|
public function testInifiniteStreamWrappedInLimitStream() |
|
{ |
|
$p = Psr7\stream_for(function () { return 'a'; }); |
|
$s = new LimitStream($p, 5); |
|
$this->assertEquals('aaaaa', (string) $s); |
|
} |
|
|
|
public function testDescribesCapabilities() |
|
{ |
|
$p = Psr7\stream_for(function () {}); |
|
$this->assertTrue($p->isReadable()); |
|
$this->assertFalse($p->isSeekable()); |
|
$this->assertFalse($p->isWritable()); |
|
$this->assertNull($p->getSize()); |
|
$this->assertEquals('', $p->getContents()); |
|
$this->assertEquals('', (string) $p); |
|
$p->close(); |
|
$this->assertEquals('', $p->read(10)); |
|
$this->assertTrue($p->eof()); |
|
|
|
try { |
|
$this->assertFalse($p->write('aa')); |
|
$this->fail(); |
|
} catch (\RuntimeException $e) {} |
|
} |
|
}
|
|
|