<?php 
 
namespace WsdlToPhp\PackageGenerator\Tests\Parser\Wsdl; 
 
use WsdlToPhp\PackageGenerator\Parser\Wsdl\TagOutput; 
 
class TagOutputTest extends WsdlParser 
{ 
    /** 
     * @return \WsdlToPhp\PackageGenerator\Parser\Wsdl\TagOutput 
     */ 
    public static function myBoardPackInstance() 
    { 
        return new TagOutput(self::generatorInstance(self::wsdlMyBoardPackPath())); 
    } 
    /** 
     * @return \SoapClient 
     */ 
    public static function myBoardPackSoapClient() 
    { 
        return new \SoapClient(self::wsdlMyBoardPackPath()); 
    } 
    /** 
     * 
     */ 
    public function testParseMyBoardpack() 
    { 
        $tagOutputParser = self::myBoardPackInstance(); 
        $soapClient = self::myBoardPackSoapClient(); 
 
        $tagOutputParser->parse(); 
 
        $count = 0; 
        $soapFunctions = $soapClient->__getFunctions(); 
        foreach ($soapFunctions as $soapFunction) { 
            $methodData = self::getMethodDataFromSoapFunction($soapFunction); 
            $method = $tagOutputParser->getGenerator()->getServiceMethod($methodData['name']); 
            if (strtolower($methodData['return']) === TagOutput::UNKNOWN) { 
                $this->assertNotSame(TagOutput::UNKNOWN, strtolower($method->getReturnType())); 
                $count++; 
            } 
        } 
        $this->assertSame(126, $count); 
    } 
    /** 
     * @param string $soapFunction 
     * @return string[] 
     */ 
    public static function getMethodDataFromSoapFunction($soapFunction) 
    { 
        if (stripos($soapFunction, TagOutput::UNKNOWN) === 0) { 
            $returnType = sprintf('(%s)', TagOutput::UNKNOWN); 
        } else { 
            $returnType = '([a-zA-Z_]*)'; 
        } 
        $matches = array(); 
        preg_match(sprintf('/%s\s([a-zA-Z_]*)\(.*/i', $returnType), $soapFunction, $matches); 
        return array( 
            'name' => $matches[2], 
            'return' => $matches[1], 
        ); 
    } 
} 
 
 |