| 
<?phpnamespace Generics\Tests;
 
 use PHPUnit\Framework\TestCase;
 use Generics\Streams\Interceptor\CachedStreamInterceptor;
 use Generics\Streams\StandardOutputStream;
 
 class StandardOutputStreamTest extends TestCase
 {
 public function testOutputUsingInterceptor()
 {
 $interceptor = new CachedStreamInterceptor();
 $this->assertEmpty($interceptor->getCache());
 
 $stdout = new StandardOutputStream();
 $stdout->setInterceptor($interceptor);
 
 $this->assertTrue($stdout->isOpen());
 $this->assertTrue($stdout->isWriteable());
 $this->assertTrue($stdout->ready());
 
 $stdout->write("very important content");
 $this->assertEquals("very important content", $interceptor->getCache());
 $this->assertEquals(0, $stdout->count());
 
 $stdout->flush();
 
 $this->assertEmpty($interceptor->getCache());
 
 $stdout->close();
 
 $this->assertFalse($stdout->isOpen());
 $this->assertFalse($stdout->isWriteable());
 $this->assertFalse($stdout->ready());
 
 $stdout->reset();
 
 $this->assertTrue($stdout->isOpen());
 $this->assertTrue($stdout->isWriteable());
 $this->assertTrue($stdout->ready());
 $this->assertEmpty($interceptor->getCache());
 
 $stdout->write("second data");
 $this->assertEquals("second data", $interceptor->getCache());
 }
 }
 
 |