<?php 
/** 
 * @author stev leibelt <[email protected]> 
 * @since 2015-04-24 
 */ 
 
namespace Test\Net\Bazzline\Component\Csv; 
 
use Mockery; 
use Net\Bazzline\Component\Csv\Reader\FilteredReader; 
use Net\Bazzline\Component\Csv\Reader\FilteredReaderFactory; 
use Net\Bazzline\Component\Csv\Reader\Reader; 
use Net\Bazzline\Component\Csv\Reader\ReaderFactory; 
use Net\Bazzline\Component\Csv\Reader\ReaderInterface; 
use Net\Bazzline\Component\Csv\Writer\FilteredWriter; 
use Net\Bazzline\Component\Csv\Writer\FilteredWriterFactory; 
use Net\Bazzline\Component\Csv\Writer\Writer; 
use Net\Bazzline\Component\Csv\Writer\WriterFactory; 
use Net\Bazzline\Component\Csv\Writer\WriterInterface; 
use Net\Bazzline\Component\GenericAgreement\Data\FilterableInterface; 
use org\bovigo\vfs\vfsStream; 
use PHPUnit\Framework\TestCase; 
 
abstract class AbstractTestCase extends TestCase 
{ 
    /** @var FilteredReaderFactory */ 
    private $filteredReaderFactory; 
 
    /** @var FilteredWriterFactory */ 
    private $filteredWriterFactory; 
 
    /** @var string */ 
    private $path; 
 
    /** @var array */ 
    private $pathOfFiles; 
 
    /** @var ReaderFactory */ 
    private $readerFactory; 
 
    /** @var WriterFactory */ 
    private $writerFactory; 
 
    /** 
     * Constructs a test case with the given name. 
     * 
     * @param string $name 
     * @param array  $data 
     * @param string $dataName 
     */ 
    public function __construct($name = null, array $data = [], $dataName = '') 
    { 
        parent::__construct($name, $data, $dataName); 
 
        $this->filteredReaderFactory    = new FilteredReaderFactory(); 
        $this->filteredWriterFactory    = new FilteredWriterFactory(); 
        $this->path                     = __DIR__ . DIRECTORY_SEPARATOR . 'data'; 
        $this->pathOfFiles              = []; 
        $this->readerFactory            = new ReaderFactory(); 
        $this->writerFactory            = new WriterFactory(); 
    } 
 
    public function __destruct() 
    { 
        foreach ($this->pathOfFiles as $path) { 
            if (file_exists($path)) { 
                unlink($path); 
            } 
        } 
        Mockery::close(); 
    } 
 
    /** 
     * @param int $permissions 
     * @param string $path 
     * @return \org\bovigo\vfs\vfsStreamDirectory 
     */ 
    protected function createFilesystem($permissions = 0700, $path = 'root') 
    { 
        return vfsStream::setup($path, $permissions); 
    } 
 
    /** 
     * @param string $name 
     * @param int $permissions 
     * @return \org\bovigo\vfs\vfsStreamFile 
     */ 
    protected function createFile($name = 'test.csv', $permissions = 0700) 
    { 
        return vfsStream::newFile($name, $permissions); 
    } 
 
    /** 
     * @param string $name 
     * @return string 
     */ 
    protected function createRealFilePath($name) 
    { 
        $path                   = $this->path . DIRECTORY_SEPARATOR . $name; 
        $this->pathOfFiles[]    = $path; 
 
        return $path; 
    } 
 
    /** 
     * @return FilteredReader 
     */ 
    protected function createFilteredReader() 
    { 
        return $this->filteredReaderFactory->create(); 
    } 
 
    /** 
     * @return ReaderInterface 
     */ 
    protected function createReader() 
    { 
        return $this->readerFactory->create(); 
    } 
 
 
 
    /** 
     * @return \Mockery\MockInterface|FilterableInterface 
     */ 
    protected function createFilter() 
    { 
        return Mockery::mock('Net\Bazzline\Component\GenericAgreement\Data\FilterableInterface'); 
    } 
 
    /** 
     * @return FilteredWriter 
     */ 
    protected function createFilteredWriter() 
    { 
        return $this->filteredWriterFactory->create(); 
    } 
 
    /** 
     * @return Writer|WriterInterface 
     */ 
    protected function createWriter() 
    { 
        return $this->writerFactory->create(); 
    } 
 
    /** 
     * @return boolean 
     */ 
    protected function phpVersionLessThen5Dot4() 
    { 
        return (version_compare(phpversion(), '5.4', '<')); 
    } 
} 
 
 |