<?php 
 
use Forker\Storage\ArrayStorage; 
 
Abstract class BaseStorageTest extends PHPUnit_Framework_TestCase 
{ 
    protected $storageSystem; 
    protected $tasks = array(1, 2, 3, 4, 5, 6); 
 
    public function setUp() 
    {         
        $this->storageSystem = $this->getSystemStorage();               
    } 
 
    public function tearDown() 
    { 
        $this->storageSystem->cleanUp(); 
    } 
 
    // to override 
    abstract protected function getSystemStorage(); 
 
    public function testWeCanGetASimpleStoredValue() 
    { 
        $expectedValue  = 'value'; 
        $nonExistingKey = 'uhh'; 
 
        $this->storageSystem->store('foo', $expectedValue); 
        $this->assertEquals($expectedValue, $this->storageSystem->get('foo')); 
 
        $this->assertFalse($this->storageSystem->get($nonExistingKey)); 
    } 
 
    /** 
     * Let's return a boolean value 
     * To make it easier 
     */ 
    public function testWeCanSToreValues() 
    { 
        $this->assertTrue( 
            $this->storageSystem->store('foo', 'some-value') 
        ); 
    } 
 
    /** 
     * It should be a way to retrieve all our stored tasks 
     */ 
    public function testIcanGetAllMyStoredTasks() 
    {    
        $this->storeAllTasks();   
        $reducedTasks = $this->storageSystem->getStoredTasks(); 
        $expected = $this->tasks; 
         
        $this->assertNotEmpty($reducedTasks); 
        $this->assertTrue(is_array($reducedTasks)); 
        $this->assertEquals($expected, $reducedTasks);         
    } 
 
    public function testWeCanCleanUpAllPreviousTasks() 
    { 
        $this->storeAllTasks();   
        $reducedTasks = $this->storageSystem->getStoredTasks(); 
         
        $this->assertNotEmpty($reducedTasks); 
        $this->assertTrue($this->storageSystem->cleanUp()); 
        $this->assertEmpty($this->storageSystem->getStoredTasks()); 
    } 
 
    protected function storeAllTasks() 
    { 
        foreach ($this->tasks as $keyTask => $task) { 
            $this->storageSystem->store($keyTask, $task); 
        } 
    } 
} 
 
 |