/** * @depends testDefaultClassImplementationIsCreatedWhenThereIsNoDefinedClassTypeImplementation */ public function testDefaultClassImplementationIsCreatedBasedOnGlobalClassTypeImplementation() { $this->globalClassOptions->setAccessorsEnabled(true)->setAccessorsStyle(new CamelCaseStyle()); $this->classMap->registerClass('helicopter', 'ConcreteXylophone'); $implementation = new ClassTypeImplementation('helicopter'); $implementation->setClassName('ConcreteXylophone')->setAccessorsEnabled(true)->setAccessorsStyle(new CamelCaseStyle()); $this->assertEquals($implementation, $this->object->getClassTypeImplementation('helicopter')); }
public function getClassTypeImplementation($name) { if (isset($this->classImplementations[$name])) { $classOptions = $this->classImplementations[$name]; } else { $classOptions = new ClassTypeImplementation($name); if ($this->globalClassOptions->getAccessorsStyle()) { $classOptions->setAccessorsStyle($this->globalClassOptions->getAccessorsStyle()); } $classOptions->setAccessorsEnabled($this->globalClassOptions->isAccessorsEnabled()); } if (!$classOptions->getClassName()) { $classOptions->setClassName($this->classMap->getClass($name)); } return $classOptions; }
public function testProperHandlingOfCircularReferences() { $user = new ClassOutline('User'); $admin = new ClassOutline('Admin'); $user->addProperty(new PropertyOutline('admin', $admin)); $admin->addProperty(new PropertyOutline('user', $user)); $this->classMap->registerClass('User', 'User')->registerClass('Admin', 'Admin'); $userType = $this->object->generate($user, $this->implementation); $properties = $userType->getProperties(); $adminType = $properties['admin']->getType(); $properties = $adminType->getProperties(); $this->assertSame($userType, $properties['user']->getType()); }