1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
|
<?php
declare(strict_types=1);
namespace ProxyManagerTest\Generator;
use PHPUnit\Framework\TestCase;
use ProxyManager\Generator\MagicMethodGenerator;
use ProxyManagerTestAsset\ClassWithByRefMagicMethods;
use ProxyManagerTestAsset\ClassWithMagicMethods;
use ProxyManagerTestAsset\EmptyClass;
use ReflectionClass;
/**
* Tests for {@see \ProxyManager\Generator\MagicMethodGenerator}
*
* @group Coverage
* @covers \ProxyManager\Generator\MagicMethodGenerator
*/
final class MagicMethodGeneratorTest extends TestCase
{
public function testGeneratesCorrectByRefReturnValue(): void
{
$reflection = new ReflectionClass(ClassWithByRefMagicMethods::class);
$magicMethod = new MagicMethodGenerator($reflection, '__get', ['name']);
self::assertStringMatchesFormat('%Apublic function & __get(%A', $magicMethod->generate());
}
public function testGeneratesCorrectByValReturnValue(): void
{
$reflection = new ReflectionClass(ClassWithMagicMethods::class);
$magicMethod = new MagicMethodGenerator($reflection, '__get', ['name']);
self::assertStringMatchesFormat('%Apublic function __get(%A', $magicMethod->generate());
}
public function testGeneratesByRefReturnValueWithNonExistingGetMethod(): void
{
$reflection = new ReflectionClass(EmptyClass::class);
$magicMethod = new MagicMethodGenerator($reflection, '__get', ['name']);
self::assertStringMatchesFormat('%Apublic function & __get(%A', $magicMethod->generate());
}
public function testGeneratesByValReturnValueWithNonExistingNonGetMethod(): void
{
$reflection = new ReflectionClass(EmptyClass::class);
$magicMethod = new MagicMethodGenerator($reflection, '__set', ['name']);
self::assertStringMatchesFormat('%Apublic function __set(%A', $magicMethod->generate());
}
}
|