/**
  * @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 testBuild()
 {
     $this->object->load('implementation.yml');
     $classMap = new ClassMap();
     $classMap->registerNamespace('Wookieb\\ZorroDataSchema\\Tests\\Resources\\Implementation\\Entity')->registerNamespace('Wookieb\\ZorroDataSchema\\Tests\\Resources\\Implementation\\SecondEntity');
     $globalOptions = new GlobalClassTypeImplementation();
     $globalOptions->setAccessorsStyle(new CamelCaseStyle())->setAccessorsEnabled(true);
     $implementation = new BasicImplementation($classMap, $globalOptions);
     $implementation->registerClassTypeImplementation($this->classImplementation('User')->setAccessorsEnabled(false)->setAccessorsStyle(new CamelCaseStyle())->addPropertyImplementation($this->propertyImplementation('name')->setSetter('setLogin'))->addPropertyImplementation($this->propertyImplementation('lastname')->setTargetPropertyName('surname'))->addPropertyImplementation($this->propertyImplementation('nickname')->setGetter('getNick'))->setAccessorsEnabled(false))->registerClassTypeImplementation($this->classImplementation('Admin')->setAccessorsEnabled(true)->setAccessorsStyle(new UnderscoreStyle())->setClassName('Wookieb\\ZorroDataSchema\\Tests\\Resources\\Implementation\\Admin')->addPropertyImplementation($this->propertyImplementation('masterOfDisaster')->setTargetPropertyName('yesHeIs')->setSetter('set_yes_he_is')->setGetter('get_yes_he_is')))->registerClassTypeImplementation($this->classImplementation('SuperUser')->setAccessorsEnabled(true)->setAccessorsStyle(new CamelCaseStyle())->addPropertyImplementation($this->propertyImplementation('position')->setSetter('setPositionName')->setGetter('getPosition'))->addPropertyImplementation($this->propertyImplementation('platform')->setGetter('getSuperUserPlatform')->setSetter('setPlatform'))->addPropertyImplementation($this->propertyImplementation('system')->setSetter('setOperatingSystem')->setGetter('getOperatingSystem')->setTargetPropertyName('operatingSystem')));
     $this->assertEquals($implementation, $this->object->build());
     $expectedResources = array(new FileResource(TESTS_DIRECTORY . '/Resources/Implementation/implementation.yml'), new FileResource(TESTS_DIRECTORY . '/Resources/Implementation/second_implementation.yml'));
     $this->assertEquals($expectedResources, $this->object->getResources());
 }
 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 testDisablingAccessors()
 {
     $this->assertMethodChaining($this->object->setAccessorsEnabled(false), 'setAccessorsEnabled');
     $this->assertFalse($this->object->isAccessorsEnabled());
 }