PHP Classes

File: tests/stream-tests/FileOutputStreamTest.php

Recommend this page to a friend!
  Classes of Maik Greubel   PHP Generics   tests/stream-tests/FileOutputStreamTest.php   Download  
File: tests/stream-tests/FileOutputStreamTest.php
Role: Unit test script
Content type: text/plain
Description: Unit test script
Class: PHP Generics
Framework for accessing streams, sockets and logs
Author: By
Last change: Update of tests/stream-tests/FileOutputStreamTest.php
Date: 2 months ago
Size: 3,916 bytes
 

Contents

Class file image Download
<?php

namespace Generics\Tests;

use
Generics\Streams\FileOutputStream;
use
Generics\Streams\FileInputStream;
use
Generics\Streams\MemoryStream;

class
FileOutputStreamTest extends \PHPUnit\Framework\TestCase
{

    private
$testFile = 'output.dat';

    private
$testData = "Only some test data; Purpose is to test the file output stream.";

    public function
setUp()
    {
       
file_put_contents($this->testFile, $this->testData);
    }

    public function
tearDown()
    {
       
unlink($this->testFile);
    }

    public function
testSimple()
    {
        if (
file_exists($this->testFile)) {
           
unlink($this->testFile);
        }

       
$fos = new FileOutputStream($this->testFile);

       
$fos->write($this->testData);
       
$fos->close();

       
$fis = new FileInputStream($this->testFile);

       
$in = "";
        while (
$fis->ready()) {
           
$in .= $fis->read(1024);
        }

       
$fis->close();

       
$this->assertEquals($this->testData, $in);
    }

   
/**
     * @expectedException \Generics\FileExistsException
     */
   
public function testError()
    {
        new
FileOutputStream($this->testFile);
    }

    public function
testAppending()
    {
       
$fos = new FileOutputStream($this->testFile, true);
       
$fos->write($this->testData);

       
$fis = new FileInputStream($this->testFile);

       
$in = "";
        while (
$fis->ready()) {
           
$in .= $fis->read(1024);
        }

       
$this->assertEquals("{$this->testData}{$this->testData}", $in);

       
$fis->close();
       
$fos->close();
    }

    public function
testWriteFromInputStream()
    {
       
$ms = new MemoryStream();
       
$ms->write($this->testData);

       
unlink($this->testFile);

       
$fos = new FileOutputStream($this->testFile, false);
       
$fos->write($ms);

       
$fos->close();

       
$fis = new FileInputStream($this->testFile);
       
$this->assertEquals($ms->count(), $fis->count());

       
$in = "";
        while (
$fis->ready()) {
           
$in = $fis->read(1024);
        }

       
$this->assertEquals($this->testData, $in);
    }

    public function
testOtherFunctions()
    {
        if (
file_exists($this->testFile)) {
           
unlink($this->testFile);
        }

       
$fos = new FileOutputStream($this->testFile);
       
$this->assertEquals(0, $fos->count());

       
$this->assertTrue($fos->isWriteable());

       
$fos->write($this->testData);
       
$fos->flush();

       
$this->assertEquals(strlen($this->testData), $fos->count());
       
$fos->lock();

       
$fos->unlock();

       
$fos->close();

       
$this->assertNotEquals($this->testFile, strval($fos));
    }

   
/**
     * @expectedException \Generics\LockException
     */
   
public function testDoubleLock()
    {
        if (
file_exists($this->testFile)) {
           
unlink($this->testFile);
        }

       
$fis = new FileOutputStream($this->testFile);
       
$fis->lock();
       
$fis->lock();
    }

   
/**
     * @expectedException \Generics\Streams\StreamException
     */
   
public function testFailFlush()
    {
        if (
file_exists($this->testFile)) {
           
unlink($this->testFile);
        }

       
$fis = new FileOutputStream($this->testFile);
       
$fis->close();
       
$fis->flush();
    }

   
/**
     * @expectedException \Generics\LockException
     */
   
public function testFailUnlock()
    {
        if (
file_exists($this->testFile)) {
           
unlink($this->testFile);
        }

       
$fis = new FileOutputStream($this->testFile);
       
$fis->unlock();
    }

   
/**
     * @expectedException \Generics\Streams\StreamException
     */
   
public function testFailCount()
    {
        if (
file_exists($this->testFile)) {
           
unlink($this->testFile);
        }

       
$fis = new FileOutputStream($this->testFile);
       
$fis->close();
       
$fis->count();
    }
}