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
|
<?php
namespace LaminasTest\Code\Generic\Prototype;
use Laminas\Code\Generic\Prototype\PrototypeClassFactory;
use LaminasTest\Code\Generator\TestAsset\PrototypeClass;
use LaminasTest\Code\Generator\TestAsset\PrototypeGenericClass;
use PHPUnit\Framework\Attributes\Group;
use PHPUnit\Framework\TestCase;
#[Group('Laminas_Code_Generator')]
#[Group('Laminas_Code_Generator_Php')]
class PrototypeClassFactoryTest extends TestCase
{
protected PrototypeClassFactory $prototypeFactory;
protected function setUp(): void
{
$this->prototypeFactory = new PrototypeClassFactory();
}
public function testAddAndGetPrototype()
{
$proto = new PrototypeClass();
$this->prototypeFactory->addPrototype($proto);
self::assertNotSame($proto, $this->prototypeFactory->getClonedPrototype($proto->getName()));
self::assertEquals($proto, $this->prototypeFactory->getClonedPrototype($proto->getName()));
}
public function testFallBackToGeneric()
{
$proto = new PrototypeGenericClass();
$this->prototypeFactory->setGenericPrototype($proto);
self::assertNotSame($proto, $this->prototypeFactory->getClonedPrototype('notexist'));
self::assertEquals($proto, $this->prototypeFactory->getClonedPrototype('notexist'));
}
public function testSetNameOnGenericIsCalledOnce()
{
$mockProto = $this->getMockBuilder(PrototypeGenericClass::class)
->onlyMethods(['setName'])
->getMock();
$mockProto->expects($this->once())->method('setName')->willReturn('notexist');
$this->prototypeFactory->setGenericPrototype($mockProto);
$this->prototypeFactory->getClonedPrototype('notexist');
}
}
|