PHP Classes

File: tests/stream-tests/FileInputStreamTest.php

Recommend this page to a friend!
  Classes of Maik Greubel   PHP Generics   tests/stream-tests/FileInputStreamTest.php   Download  
File: tests/stream-tests/FileInputStreamTest.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/FileInputStreamTest.php
Date: 7 months ago
Size: 2,439 bytes
 

Contents

Class file image Download
<?php

namespace Generics\Tests;

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

class
FileInputStreamTest extends \PHPUnit\Framework\TestCase
{

    private
$fileName = 'input.dat';

    private
$testData = "Well, this content is only needed for testing the framework. Don't expect to much...";

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

    public function
tearDown()
    {
        if (
file_exists($this->fileName)) {
           
unlink($this->fileName);
        }
    }

    public function
testSimple()
    {
       
$fis = new FileInputStream($this->fileName);

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

       
$in = "";

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

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

       
$fis->reset();

       
$in = $fis->read(1024);

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

       
$this->assertFalse($fis->ready());
    }

   
/**
     * @expectedException \Generics\FileNotFoundException
     */
   
public function testNonExisting()
    {
        new
FileInputStream("non-existing-file.ext");
    }

   
/**
     * This will work without any exception
     * It will cause an exception in case of the FileInputStream will be opened by another process
     */
   
public function testNoAccess()
    {
        if (
file_exists($this->fileName)) {
           
unlink($this->fileName);
        }
       
$fis = new FileOutputStream($this->fileName);
       
$this->assertTrue($fis->ready());
       
$fis->lock();
       
$this->assertTrue($fis->isLocked());

        new
FileInputStream($this->fileName);
    }

    public function
testLockUnlock()
    {
       
$fis = new FileInputStream($this->fileName);
       
$this->assertTrue($fis->ready());
       
$fis->lock();
       
$this->assertTrue($fis->isLocked());
       
$fis->unlock();
       
$this->assertFalse($fis->isLocked());
    }

   
/**
     * @expectedException \Generics\LockException
     */
   
public function testDoubleLock()
    {
       
$fis = new FileInputStream($this->fileName);
       
$fis->lock();
       
$fis->lock();
    }

   
/**
     * @expectedException \Generics\Streams\StreamException
     */
   
public function testNotReady()
    {
       
$fis = new FileInputStream($this->fileName);
       
$fis->close();
       
$fis->read();
    }
}