/**
  * @depends testDefaultPropertyImplementationWithAccessorsButWithoutStyle
  */
 public function testDefaultPropertyImplementationWithAccessorsAndStyle()
 {
     $this->object->setAccessorsEnabled(true)->setAccessorsStyle(new CamelCaseStyle());
     $propertyName = 'inferior';
     $propertyImplementation = $this->object->getImplementationForProperty($propertyName);
     $this->assertSame('setInferior', $propertyImplementation->getSetter(), 'setter name should be null');
     $this->assertSame('getInferior', $propertyImplementation->getGetter(), 'getter name should be null');
 }
 /**
  * @param PropertyOutline $property
  * @param ClassTypeImplementation $classOptions
  * @param ImplementationInterface $implementation
  *
  * @return PropertyDefinition
  */
 protected function createPropertyDefinition(PropertyOutline $property, ClassTypeImplementation $classOptions, ImplementationInterface $implementation)
 {
     $propertyType = $this->schemaLinker->generateType($property->getType(), $implementation);
     $propertyDefinition = new PropertyDefinition($property->getName(), $propertyType);
     $propertyImplementation = $classOptions->getImplementationForProperty($property->getName());
     $targetPropertyName = $propertyImplementation->getTargetPropertyName();
     if ($targetPropertyName) {
         $propertyDefinition->setTargetPropertyName($targetPropertyName);
     }
     // nullable
     $propertyDefinition->setIsNullable($property->isNullable());
     // default value
     if ($property->hasDefaultValue()) {
         $propertyDefinition->setDefaultValue($property->getDefaultValue());
     }
     // setters and getters
     $setter = $propertyImplementation->getSetter();
     if ($setter) {
         $propertyDefinition->setSetterName($setter);
     }
     $getter = $propertyImplementation->getGetter();
     if ($getter) {
         $propertyDefinition->setGetterName($getter);
     }
     return $propertyDefinition;
 }