Code Coverage
 
Classes and Traits
Functions and Methods
Lines
Total
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
2 / 2
CRAP
100.00% covered (success)
100.00%
75 / 75
AbstractContainerCollectionTest
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
2 / 2
3
100.00% covered (success)
100.00%
75 / 75
 setUp
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
3 / 3
 testGetSubset
100.00% covered (success)
100.00%
1 / 1
2
100.00% covered (success)
100.00%
72 / 72
<?php
/**
 * This file is part of the Hephaistos project management API.
 * 
 * As each files provides by the CSCFA, this file is licensed
 * under the MIT license.
 *
 * PHP version 5.6
 *
 * @category Test
 * @package  Hephaistos
 * @author   matthieu vallance <matthieu.vallance@cscfa.fr>
 * @license  MIT <https://opensource.org/licenses/MIT>
 * @link     http://cscfa.fr
 */
namespace CSDT\CollectionsBundle\Tests\AbstractCollections;
use CSDT\CollectionsBundle\AbstractCollections\AbstractContainerCollection;
/**
 * Abstract container collection test
 *
 * This class is used to test the features of
 * the Abstract container collection.
 *
 * @category Test
 * @package  Hephaistos
 * @author   matthieu vallance <matthieu.vallance@cscfa.fr>
 * @license  MIT <https://opensource.org/licenses/MIT>
 * @link     http://cscfa.fr
 */
class AbstractContainerCollectionTest extends \PHPUnit_Framework_TestCase
{
    /**
     * Test instance
     * 
     * This property store the instance
     * to be tested.
     * 
     * @var \PHPUnit_Framework_MockObject_MockObject|AbstractContainerCollection
     */
    protected $testInstance;
    
    /**
     * Set up
     * 
     * Sets up the fixture, for example, open a network connection.
     * This method is called before a test is executed.
     * 
     * @return void
     */
    public function setUp()
    {
        $class = AbstractContainerCollection::class;
        $this->testInstance = $this->getMockForAbstractClass($class);
    }
    
    /**
     * Test get subset
     * 
     * This method test the get subset support
     * of the Container collections.
     * 
     * @return void
     */
    public function testGetSubset()
    {
        $class = AbstractContainerCollection::class;
        
        $mock = clone $this->testInstance;
        $mock->setAll(array("key51"=>"value51"));
        
        $array = array(
            "key1" => "value1",
            "key2" => "value2",
            "key3" => "value3",
            "key4" => array(
                "key41" => "value41",
                "key42" => "value42"
            ),
            "key5" => $mock
        );
        
        $this->testInstance->setAll($array);
        
        foreach (array_keys($array) as $key) {
            $this->assertInstanceOf(
                $class,
                $this->testInstance->getSubset($key),
                sprintf(
                    "The instance of %s is expected to return".
                    " instance of %s when the method %s is called",
                    $class,
                    $class,
                    "getSubset"
                )
            );
        }
        $this->assertTrue(
            empty($this->testInstance->getSubset("key1")->toArray()),
            sprintf(
                "The instance of %s is expected to".
                " return an empty subset for the key %s".
                " containing %s",
                $class,
                "key1",
                json_encode($array["key1"])
            )
        );
        $this->assertTrue(
            empty($this->testInstance->getSubset("key2")->toArray()),
            sprintf(
                "The instance of %s is expected to".
                " return an empty subset for the key %s".
                " containing %s",
                $class,
                "key2",
                json_encode($array["key2"])
            )
        );
        $this->assertTrue(
            empty($this->testInstance->getSubset("key3")->toArray()),
            sprintf(
                "The instance of %s is expected to".
                " return an empty subset for the key %s".
                " containing %s",
                $class,
                "key3",
                json_encode($array["key3"])
            )
        );
        $this->assertFalse(
            empty($this->testInstance->getSubset("key4")->toArray()),
            sprintf(
                "The instance of %s is expected to".
                " return an hydrated subset for the key %s".
                " containing %s",
                $class,
                "key4",
                json_encode($array["key4"])
            )
        );
        $this->assertFalse(
            empty($this->testInstance->getSubset("key5")->toArray()),
            sprintf(
                "The instance of %s is expected to".
                " return an hydrated subset for the key %s".
                " containing %s",
                $class,
                "key5",
                json_encode($array["key5"])
            )
        );
    }
    
}