<?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);
}
}
|