<?php 
 
declare(strict_types=1); 
 
namespace WsdlToPhp\PhpGenerator\Tests\Component; 
 
use WsdlToPhp\PhpGenerator\Component\PhpInterface as PhpInterfaceComponent; 
use WsdlToPhp\PhpGenerator\Element\PhpAnnotation as PhpAnnotationElement; 
use WsdlToPhp\PhpGenerator\Element\PhpFunctionParameter as PhpFunctionParameterElement; 
use WsdlToPhp\PhpGenerator\Element\PhpMethod; 
use WsdlToPhp\PhpGenerator\Element\PhpProperty as PhpPropertyElement; 
 
/** 
 * @internal 
 * @coversDefaultClass 
 */ 
class PhpInterfaceTest extends AbstractComponent 
{ 
    public function testSimpleToString() 
    { 
        $interface = new PhpInterfaceComponent('Foo', true, null, [ 
            'stdClass', 
        ]); 
 
        $interface 
            ->addAnnotationBlock('@var string') 
            ->addConstant('FOO', 'theValue') 
            ->addAnnotationBlock('@var string') 
            ->addConstant('BAR', 'theOtherValue') 
            ->addAnnotationBlock(new PhpAnnotationElement('var', 'int')) 
            ->addProperty('bar', 1) 
            ->addAnnotationBlock(new PhpAnnotationElement('var', 'bool')) 
            ->addPropertyElement(new PhpPropertyElement('sample', true)) 
            ->addAnnotationBlock([ 
                new PhpAnnotationElement(PhpAnnotationElement::NO_NAME, 'This method is very useful'), 
                new PhpAnnotationElement('date', '2012-03-01'), 
                '@return mixed', 
            ]) 
            ->addMethodElement(new PhpMethod('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__, $interface); 
    } 
 
    public function testSimpleToStringWithReturnType() 
    { 
        $interface = new PhpInterfaceComponent('Foo', true, null, [ 
            'stdClass', 
        ]); 
 
        $interface 
            ->addAnnotationBlock('@var string') 
            ->addConstant('FOO', 'theValue') 
            ->addAnnotationBlock('@var string') 
            ->addConstant('BAR', 'theOtherValue') 
            ->addAnnotationBlock(new PhpAnnotationElement('var', 'int')) 
            ->addProperty('bar', 1) 
            ->addAnnotationBlock(new PhpAnnotationElement('var', 'bool')) 
            ->addPropertyElement(new PhpPropertyElement('sample', true)) 
            ->addAnnotationBlock([ 
                new PhpAnnotationElement(PhpAnnotationElement::NO_NAME, 'This method is very useful'), 
                new PhpAnnotationElement('date', '2012-03-01'), 
                '@return mixed', 
            ]) 
            ->addMethodElement(new PhpMethod('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__, $interface); 
    } 
} 
 
 |