| 
<?php
 namespace ZeusTest\Helpers;
 
 use PHPUnit_Framework_TestCase;
 
 abstract class AbstractConfigTestHelper extends PHPUnit_Framework_TestCase
 {
 protected $configClass;
 
 protected function getConfig($data = [])
 {
 $configClass = $this->configClass;
 
 return new $configClass($data);
 }
 
 abstract public function configDataProvider();
 
 /**
 * @param mixed[] $value
 * @param string $arrayKey
 * @param string $methodName
 * @dataProvider configDataProvider
 */
 public function testConfigConstructor($value, $arrayKey, $methodName)
 {
 $config = $this->getConfig([$arrayKey => $value]);
 
 $methodName = (is_bool($value) ? 'is' : 'get') . $methodName;
 $this->assertEquals($value, $config->$methodName());
 $data = $config->toArray();
 $this->assertEquals($value, $data[$arrayKey]);
 }
 
 /**
 * @param mixed[] $value
 * @param string $arrayKey
 * @param string $methodName
 * @dataProvider configDataProvider
 */
 public function testConfigSetters($value, $arrayKey, $methodName)
 {
 $config = $this->getConfig();
 $setterMethodName = (is_bool($value) ? 'setIs' : 'set') . $methodName;
 $config->$setterMethodName($value);
 
 $getterMethodName = (is_bool($value) ? 'is' : 'get') . $methodName;
 $this->assertEquals($value, $config->$getterMethodName());
 }
 }
 |