* * Full license available in separate LICENSE file */ class PropertiesObject { private $getter; private $magic = []; public $field = 'value'; public function __construct($field, $getter, array $magic = []) { $this->field = $field; $this->getter = $getter; $this->magic = $magic; } public function getValue() { return $this->getter; } public function __get($name) { return $this->magic[$name]; } public function __toString() { return __CLASS__; } } class ObjectTransformsTest extends \PHPUnit\Framework\TestCase { use RandomDataTrait; /** * @dataProvider randomDataProvider */ public function testFieldTransform($data = null) { $object = new PropertiesObject($data, null, []); $transform = \Kadet\Functional\Transforms\field('field'); $this->assertSame($transform($object), $data); } /** * @dataProvider randomDataProvider */ public function testFieldTransformMagic($data = null) { $object = new PropertiesObject(false, false, ['magic' => $data]); $transform = \Kadet\Functional\Transforms\property('magic'); $this->assertSame($transform($object), $data); } /** * @dataProvider randomDataProvider */ public function testPropertyTransformGetter($data = null) { $object = new PropertiesObject(false, $data, []); $transform = \Kadet\Functional\Transforms\property('value'); $this->assertSame($transform($object), $data); } /** * @dataProvider randomDataProvider */ public function testGetterTransform($data = null) { $object = new PropertiesObject(false, $data, []); $transform = \Kadet\Functional\Transforms\getter('value'); $this->assertSame($transform($object), $data); } /** * @dataProvider randomDataProvider */ public function testPropertyTransformField($data = null) { $object = new PropertiesObject($data, false, []); $transform = \Kadet\Functional\Transforms\property('field'); $this->assertSame($transform($object), $data); } /** * @dataProvider randomDataProvider */ public function testPropertyTransformMagic($data = null) { $object = new PropertiesObject(false, false, ['magic' => $data]); $transform = \Kadet\Functional\Transforms\property('magic'); $this->assertSame($transform($object), $data); } /** * @dataProvider randomDataProvider */ public function testMethodTransform($data = null) { $object = new PropertiesObject(false, false); $transform = \Kadet\Functional\Transforms\method('__toString'); $this->assertSame($transform($object), PropertiesObject::class); } }