<?php
namespace Generics\Tests;
use Generics\Streams\MemoryStream;
use Generics\Streams\FileInputStream;
class MemoryStreamTest extends \PHPUnit\Framework\TestCase
{
private $testFile = 'memory.dat';
private $testData = "This data will only appear in memory. Writing to persistent files is not possible!";
public function setUp()
{
file_put_contents($this->testFile, $this->testData);
}
public function tearDown()
{
if (file_exists($this->testFile)) {
unlink($this->testFile);
}
}
public function testMemoryWrite()
{
$ms = new MemoryStream();
$this->assertTrue($ms->isWriteable());
$ms->write($this->testData);
$this->assertEquals(strlen($this->testData), $ms->count());
}
/**
* @expectedException \Generics\Streams\StreamException
*/
public function testReadAfterClose()
{
$ms = new MemoryStream();
$ms->close();
$ms->write($this->testData);
}
public function testWriteAndRead()
{
$ms = new MemoryStream();
$ms->write($this->testData);
$out = $ms->read(1024);
$this->assertEquals($this->testData, $out);
$ms->write($this->testData);
$out = $ms->read(1024);
$this->assertEquals($this->testData, $out);
$out = $ms->read(1024);
$this->assertEmpty($out);
$ms->reset();
$out = $ms->read(1024);
$this->assertEquals("{$this->testData}{$this->testData}", $out);
$this->assertEquals(strlen($this->testData) * 2, $ms->count());
}
public function testFlush()
{
$ms = new MemoryStream();
$ms->write($this->testData);
$ms->flush();
$this->assertEquals(0, $ms->count());
}
public function testMemoryFromInput()
{
$fis = new FileInputStream($this->testFile);
$in = $fis->read(1024);
$ms = new MemoryStream($fis);
$this->assertEquals(strlen($in), $ms->count());
$in2 = $ms->read(1024);
$this->assertNotEmpty($in2);
$this->assertEquals($in, $in2);
}
public function testSlurp()
{
$fis = new FileInputStream($this->testFile);
$in = $fis->read(1024);
$ms = new MemoryStream($fis);
$str = $ms->slurp();
$this->assertEquals($in, $str);
}
/**
* @expectedException \Generics\Streams\StreamException
*/
public function testReadClosed()
{
$ms = new MemoryStream();
$ms->write($this->testData);
$ms->close();
$ms->read(1);
}
/**
* @expectedException \Generics\Streams\StreamException
*/
public function testCountClosed()
{
$ms = new MemoryStream();
$ms->write($this->testData);
$ms->close();
$ms->count();
}
/**
* @expectedException \Generics\Streams\StreamException
*/
public function testResetClosed()
{
$ms = new MemoryStream();
$ms->write($this->testData);
$ms->close();
$ms->reset();
}
/**
* @expectedException \Generics\Streams\StreamException
*/
public function testFlushClosed()
{
$ms = new MemoryStream();
$ms->write($this->testData);
$ms->close();
$ms->flush();
}
}
|