Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
| Total | |
100.00% |
1 / 1 |
|
100.00% |
8 / 8 |
CRAP | |
100.00% |
161 / 161 |
| AbstractCollectionHelperTest | |
100.00% |
1 / 1 |
|
100.00% |
9 / 9 |
11 | |
100.00% |
161 / 161 |
| setUp | |
100.00% |
1 / 1 |
1 | |
100.00% |
3 / 3 |
|||
| testSetCasterManager | |
100.00% |
1 / 1 |
1 | |
100.00% |
24 / 24 |
|||
| testArrayToCollection | |
100.00% |
1 / 1 |
1 | |
100.00% |
23 / 23 |
|||
| testArrayToCollectionError | |
100.00% |
1 / 1 |
1 | |
100.00% |
0 / 0 |
|||
| testMerge | |
100.00% |
1 / 1 |
1 | |
100.00% |
27 / 27 |
|||
| testSub | |
100.00% |
1 / 1 |
1 | |
100.00% |
25 / 25 |
|||
| testSubMap | |
100.00% |
1 / 1 |
1 | |
100.00% |
27 / 27 |
|||
| testWalk | |
100.00% |
1 / 1 |
2 | |
100.00% |
6 / 6 |
|||
| anonymous function | |
100.00% |
1 / 1 |
2 | |
100.00% |
14 / 14 |
|||
| <?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\CollectionHelper\AbstractHelper; | |
| // @codingStandardsIgnoreStart | |
| use CSDT\CollectionsBundle\CollectionHelper\AbstractHelper\AbstractCollectionHelper; | |
| use CSDT\CollectionsBundle\CollectionHelper\HelperInterface\ArrayCasterManagerInterface; | |
| use CSDT\CollectionsBundle\CollectionInterfaces\CollectionInterface; | |
| use CSDT\CollectionsBundle\Collections\ValueCollection; | |
| use CSDT\CollectionsBundle\Collections\MapCollection; | |
| // @codingStandardsIgnoreEnd | |
| /** | |
| * Abstract collection helper test | |
| * | |
| * This class is used to test the logic of | |
| * the Abstract collection helper class. | |
| * | |
| * @category Test | |
| * @package Hephaistos | |
| * @author matthieu vallance <matthieu.vallance@cscfa.fr> | |
| * @license MIT <https://opensource.org/licenses/MIT> | |
| * @link http://cscfa.fr | |
| */ | |
| class AbstractCollectionHelperTest extends \PHPUnit_Framework_TestCase | |
| { | |
| /** | |
| * Test instance | |
| * | |
| * This property store the instance | |
| * to be tested. | |
| * | |
| * @var \PHPUnit_Framework_MockObject_MockObject|AbstractCollectionHelper | |
| */ | |
| 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() | |
| { | |
| $this->testInstance = $this->getMockForAbstractClass( | |
| AbstractCollectionHelper::class | |
| ); | |
| } | |
| /** | |
| * Test set caster manager | |
| * | |
| * This method test the set caster | |
| * manager support of the Abstract | |
| * collection helper class. | |
| * | |
| * @return void | |
| */ | |
| public function testSetCasterManager() | |
| { | |
| $mockManager = $this->getMockForAbstractClass( | |
| ArrayCasterManagerInterface::class | |
| ); | |
| $this->assertSame( | |
| $this->testInstance, | |
| $this->testInstance->setCasterManager($mockManager), | |
| sprintf( | |
| "The instance of %s is expected to return". | |
| " itself when the method %s is called", | |
| AbstractCollectionHelper::class, | |
| "setCasterManager" | |
| ) | |
| ); | |
| $reflection = new \ReflectionClass(AbstractCollectionHelper::class); | |
| $managerProperty = $reflection->getProperty("manager"); | |
| $managerProperty->setAccessible(true); | |
| $this->assertSame( | |
| $mockManager, | |
| $managerProperty->getValue($this->testInstance), | |
| sprintf( | |
| "The instance of %s is expected to contain". | |
| " the given instance of %s after the method". | |
| " %s called", | |
| AbstractCollectionHelper::class, | |
| ArrayCasterManagerInterface::class, | |
| "setCasterManager" | |
| ) | |
| ); | |
| } | |
| /** | |
| * Test array to collection | |
| * | |
| * This method test the casting support | |
| * of the Abstract collection helper. | |
| * | |
| * @return void | |
| */ | |
| public function testArrayToCollection() | |
| { | |
| $source = array(); | |
| $collectionType = CollectionInterface::class; | |
| $return = openssl_random_pseudo_bytes(3); | |
| $mockManager = $this->getMockForAbstractClass( | |
| ArrayCasterManagerInterface::class | |
| ); | |
| $mockManager->expects($this->once()) | |
| ->method("process") | |
| ->with($this->equalTo($source), $this->equalTo($collectionType)) | |
| ->will($this->returnValue($return)); | |
| $reflection = new \ReflectionClass(AbstractCollectionHelper::class); | |
| $managerProperty = $reflection->getProperty("manager"); | |
| $managerProperty->setAccessible(true); | |
| $managerProperty->setValue($this->testInstance, $mockManager); | |
| $this->assertEquals( | |
| $return, | |
| $this->testInstance->arrayToCollection($source, $collectionType), | |
| sprintf( | |
| "The instance of %s is expected to the result". | |
| " of the manager %s method when the method %s is called", | |
| AbstractCollectionHelper::class, | |
| "process", | |
| "arrayToCollection" | |
| ) | |
| ); | |
| } | |
| /** | |
| * Test array to collection error | |
| * | |
| * This method test the exception throwed | |
| * by the abstract collection helper when | |
| * it's manager is not set. | |
| * | |
| * @expectedException \LogicException | |
| * @return void | |
| * @codeCoverageIgnore | |
| */ | |
| public function testArrayToCollectionError() | |
| { | |
| $this->testInstance->arrayToCollection( | |
| array(), | |
| CollectionInterface::class | |
| ); | |
| } | |
| /** | |
| * Test merge | |
| * | |
| * This method test the merging operation | |
| * support of the abstract collection | |
| * helper. | |
| * | |
| * @return void | |
| */ | |
| public function testMerge() | |
| { | |
| $source = array("first", "second"); | |
| $collectionType = ValueCollection::class; | |
| $return = openssl_random_pseudo_bytes(3); | |
| $mockManager = $this->getMockForAbstractClass( | |
| ArrayCasterManagerInterface::class | |
| ); | |
| $mockManager->expects($this->once()) | |
| ->method("process") | |
| ->with($this->equalTo($source), $this->equalTo($collectionType)) | |
| ->will($this->returnValue($return)); | |
| $reflection = new \ReflectionClass(AbstractCollectionHelper::class); | |
| $managerProperty = $reflection->getProperty("manager"); | |
| $managerProperty->setAccessible(true); | |
| $managerProperty->setValue($this->testInstance, $mockManager); | |
| $collection1 = new ValueCollection(); | |
| $collection1->add("first"); | |
| $collection2 = new ValueCollection(); | |
| $collection2->add("second"); | |
| $this->assertSame( | |
| $return, | |
| $this->testInstance->mergeCollections($collection1, $collection2), | |
| sprintf( | |
| "The instance of %s is expected to return the result of the". | |
| " %s method of the %s instance", | |
| AbstractCollectionHelper::class, | |
| "toCollection", | |
| ArrayCasterManagerInterface::class | |
| ) | |
| ); | |
| } | |
| /** | |
| * Test sub | |
| * | |
| * This method test the subdivision | |
| * support of the abstract collection | |
| * helper for the simple collections. | |
| * | |
| * @return void | |
| */ | |
| public function testSub() | |
| { | |
| $source = array("1", "2"); | |
| $collectionType = ValueCollection::class; | |
| $return = openssl_random_pseudo_bytes(3); | |
| $mockManager = $this->getMockForAbstractClass( | |
| ArrayCasterManagerInterface::class | |
| ); | |
| $mockManager->expects($this->once()) | |
| ->method("process") | |
| ->with($this->equalTo($source), $this->equalTo($collectionType)) | |
| ->will($this->returnValue($return)); | |
| $reflection = new \ReflectionClass(AbstractCollectionHelper::class); | |
| $managerProperty = $reflection->getProperty("manager"); | |
| $managerProperty->setAccessible(true); | |
| $managerProperty->setValue($this->testInstance, $mockManager); | |
| $collection = new ValueCollection(); | |
| $collection->addAll(array("1", "2", "3", "4")); | |
| $this->assertSame( | |
| $return, | |
| $this->testInstance->subCollection($collection, 0, 2), | |
| sprintf( | |
| "The instance of %s is expected to return the result of the". | |
| " %s method of the %s instance", | |
| AbstractCollectionHelper::class, | |
| "toCollection", | |
| ArrayCasterManagerInterface::class | |
| ) | |
| ); | |
| } | |
| /** | |
| * Test sub map | |
| * | |
| * This method test the subdivision | |
| * support of the abstract collection | |
| * helper for the mapped collections. | |
| * | |
| * @return void | |
| */ | |
| public function testSubMap() | |
| { | |
| $source = array("1"=>"one", "2"=>"two"); | |
| $collectionType = MapCollection::class; | |
| $return = openssl_random_pseudo_bytes(3); | |
| $mockManager = $this->getMockForAbstractClass( | |
| ArrayCasterManagerInterface::class | |
| ); | |
| $mockManager->expects($this->once()) | |
| ->method("process") | |
| ->with($this->equalTo($source), $this->equalTo($collectionType)) | |
| ->will($this->returnValue($return)); | |
| $reflection = new \ReflectionClass(AbstractCollectionHelper::class); | |
| $managerProperty = $reflection->getProperty("manager"); | |
| $managerProperty->setAccessible(true); | |
| $managerProperty->setValue($this->testInstance, $mockManager); | |
| $collection = new MapCollection(); | |
| $collection->setAll( | |
| array("1"=>"one", "2"=>"two", "3"=>"three", "4"=>"four") | |
| ); | |
| $this->assertSame( | |
| $return, | |
| $this->testInstance->subMap($collection, array("1", "2")), | |
| sprintf( | |
| "The instance of %s is expected to return the result of the". | |
| " %s method of the %s instance", | |
| AbstractCollectionHelper::class, | |
| "toCollection", | |
| ArrayCasterManagerInterface::class | |
| ) | |
| ); | |
| } | |
| /** | |
| * Test walk | |
| * | |
| * This method test the walk collection | |
| * feature of the abstract collection | |
| * helper class. | |
| * | |
| * @return void | |
| */ | |
| public function testWalk() | |
| { | |
| $array = array(1, 2, 3, 4, 5); | |
| $collection = new ValueCollection(); | |
| $collection->addAll($array); | |
| $resultArray = array(); | |
| $this->testInstance->walkCollection( | |
| $collection, | |
| function ($value, $index, $uargs) use (&$resultArray) { | |
| $unit = $uargs[0]; | |
| if ($unit instanceof AbstractCollectionHelperTest) { | |
| $unit->assertEquals( | |
| $value, | |
| $index + 1, | |
| sprintf( | |
| "The walk method of %s instance is". | |
| " expected to use the content array %s", | |
| AbstractCollectionHelper::class, | |
| json_encode($uargs[1]) | |
| ) | |
| ); | |
| $resultArray[] = $value; | |
| } | |
| }, | |
| array($this, $array) | |
| ); | |
| $this->assertEquals( | |
| $array, | |
| $resultArray, | |
| sprintf( | |
| "the walk method of the %s instance is expected to". | |
| " traverse the entire content %s", | |
| AbstractCollectionHelper::class, | |
| json_encode($array) | |
| ) | |
| ); | |
| } | |
| } |