| 
<?php
 declare(strict_types=1);
 
 namespace WsdlToPhp\PhpGenerator\Tests\Component;
 
 use WsdlToPhp\PhpGenerator\Component\PhpClass as PhpClassComponent;
 use WsdlToPhp\PhpGenerator\Element\PhpAnnotation as PhpAnnotationElement;
 use WsdlToPhp\PhpGenerator\Element\PhpClass;
 use WsdlToPhp\PhpGenerator\Element\PhpFunctionParameter as PhpFunctionParameterElement;
 use WsdlToPhp\PhpGenerator\Element\PhpProperty;
 use WsdlToPhp\PhpGenerator\Element\PhpProperty as PhpPropertyElement;
 
 /**
 * @internal
 * @coversDefaultClass
 */
 class PhpClassTest extends AbstractComponent
 {
 public function testGetMainElementMustBeOfPhpClassElement()
 {
 $class = new PhpClassComponent('Foo', true, 'stdClass');
 
 $this->assertInstanceOf(PhpClass::class, $class->getMainElement());
 }
 
 public function testSimpleToString()
 {
 $class = new PhpClassComponent('Foo', true, 'stdClass');
 
 $class
 ->addAnnotationBlock('@var string')
 ->addConstant('FOO', 'theValue')
 ->addAnnotationBlock('@var string')
 ->addConstant('BAR', 'theOtherValue')
 ->addAnnotationBlock(new PhpAnnotationElement('var', 'int'))
 ->addProperty('bar', 1, PhpProperty::ACCESS_PRIVATE, PhpProperty::TYPE_INT)
 ->addAnnotationBlock([
 '- documentation: The ID of the contact that performed the action, if available. May be blank for anonymous activity.',
 new PhpAnnotationElement('var', 'bool'),
 ])
 ->addPropertyElement(new PhpPropertyElement('sample', true))
 ->addAnnotationBlock(new PhpAnnotationElement('var', 'string'))
 ->addPropertyElement(new PhpPropertyElement('noValue', PhpPropertyElement::NO_VALUE))
 ->addAnnotationBlock([
 new PhpAnnotationElement(PhpAnnotationElement::NO_NAME, 'This method is very useful'),
 new PhpAnnotationElement('date', '2012-03-01'),
 '@return mixed',
 ])
 ->addMethod('getMyValue', [
 new PhpFunctionParameterElement('asString', true),
 'unusedParameter',
 ])
 ->addAnnotationBlock([
 new PhpAnnotationElement(PhpAnnotationElement::NO_NAME, 'This method is very useless'),
 new PhpAnnotationElement('date', '2012-03-01'),
 '@return void',
 ])
 ->addMethod('uselessMethod', [
 new PhpFunctionParameterElement('uselessParameter', null),
 'unusedParameter',
 ])
 ;
 
 $this->assertSameContent(__FUNCTION__, $class);
 }
 
 public function testSimpleToStringWithReturnTypePerMethod()
 {
 $class = new PhpClassComponent('Foo', true, 'stdClass');
 
 $class
 ->addAnnotationBlock('@var string')
 ->addConstant('FOO', 'theValue')
 ->addAnnotationBlock('@var string')
 ->addConstant('BAR', 'theOtherValue')
 ->addAnnotationBlock(new PhpAnnotationElement('var', 'int'))
 ->addProperty('bar', 1)
 ->addAnnotationBlock([
 '- documentation: The ID of the contact that performed the action, if available. May be blank for anonymous activity.',
 new PhpAnnotationElement('var', 'bool'),
 ])
 ->addPropertyElement(new PhpPropertyElement('sample', true))
 ->addAnnotationBlock(new PhpAnnotationElement('var', 'string'))
 ->addPropertyElement(new PhpPropertyElement('noValue', PhpPropertyElement::NO_VALUE))
 ->addAnnotationBlock([
 new PhpAnnotationElement(PhpAnnotationElement::NO_NAME, 'This method is very useful'),
 new PhpAnnotationElement('date', '2012-03-01'),
 '@return mixed',
 ])
 ->addMethod('getMyValue', [
 new PhpFunctionParameterElement('asString', true),
 'unusedParameter',
 ])
 ->addAnnotationBlock([
 new PhpAnnotationElement(PhpAnnotationElement::NO_NAME, 'This method is very useless'),
 new PhpAnnotationElement('date', '2012-03-01'),
 '@return void',
 ])
 ->addMethod('uselessMethod', [
 new PhpFunctionParameterElement('uselessParameter', null),
 'unusedParameter',
 ], 'void')
 ;
 
 $this->assertSameContent(__FUNCTION__, $class);
 }
 
 public function testSimpleToStringWithNullableReturnTypePerMethod()
 {
 $class = new PhpClassComponent('Foo', true, 'stdClass');
 
 $class
 ->addAnnotationBlock('@var string')
 ->addConstant('FOO', 'theValue')
 ->addAnnotationBlock('@var string')
 ->addConstant('BAR', 'theOtherValue')
 ->addAnnotationBlock(new PhpAnnotationElement('var', 'int'))
 ->addProperty('bar', 1)
 ->addAnnotationBlock([
 '- documentation: The ID of the contact that performed the action, if available. May be blank for anonymous activity.',
 new PhpAnnotationElement('var', 'bool'),
 ])
 ->addPropertyElement(new PhpPropertyElement('sample', true))
 ->addAnnotationBlock(new PhpAnnotationElement('var', 'string'))
 ->addPropertyElement(new PhpPropertyElement('noValue', PhpPropertyElement::NO_VALUE))
 ->addAnnotationBlock([
 new PhpAnnotationElement(PhpAnnotationElement::NO_NAME, 'This method is very useful'),
 new PhpAnnotationElement('date', '2012-03-01'),
 '@return mixed',
 ])
 ->addMethod('getMyValue', [
 new PhpFunctionParameterElement('asString', true),
 'unusedParameter',
 ])
 ->addAnnotationBlock([
 new PhpAnnotationElement(PhpAnnotationElement::NO_NAME, 'This method is very useless'),
 new PhpAnnotationElement('date', '2012-03-01'),
 '@return int|null',
 ])
 ->addMethod('uselessMethod', [
 new PhpFunctionParameterElement('uselessParameter', null),
 'unusedParameter',
 ], '?int')
 ;
 
 $this->assertSameContent(__FUNCTION__, $class);
 }
 }
 
 |