| 
<?php
 namespace WsdlToPhp\PackageGenerator\Tests\File;
 
 use WsdlToPhp\PackageGenerator\File\AbstractFile as File;
 use WsdlToPhp\PackageGenerator\Generator\Generator;
 use WsdlToPhp\PackageGenerator\Parser\SoapClient\Structs as StructsParser;
 use WsdlToPhp\PackageGenerator\Parser\SoapClient\Functions as FunctionsParser;
 use WsdlToPhp\PackageGenerator\Parser\Wsdl\TagAttribute as TagAttributeParser;
 use WsdlToPhp\PackageGenerator\Parser\Wsdl\TagComplexType as TagComplexTypeParser;
 use WsdlToPhp\PackageGenerator\Parser\Wsdl\TagDocumentation as TagDocumentationParser;
 use WsdlToPhp\PackageGenerator\Parser\Wsdl\TagElement as TagElementParser;
 use WsdlToPhp\PackageGenerator\Parser\Wsdl\TagEnumeration as TagEnumerationParser;
 use WsdlToPhp\PackageGenerator\Parser\Wsdl\TagExtension as TagExtensionParser;
 use WsdlToPhp\PackageGenerator\Parser\Wsdl\TagHeader as TagHeaderParser;
 use WsdlToPhp\PackageGenerator\Parser\Wsdl\TagImport as TagImportParser;
 use WsdlToPhp\PackageGenerator\Parser\Wsdl\TagInclude as TagIncludeParser;
 use WsdlToPhp\PackageGenerator\Parser\Wsdl\TagInput as TagInputParser;
 use WsdlToPhp\PackageGenerator\Parser\Wsdl\TagList as TagListParser;
 use WsdlToPhp\PackageGenerator\Parser\Wsdl\TagOutput as TagOutputParser;
 use WsdlToPhp\PackageGenerator\Parser\Wsdl\TagRestriction as TagRestrictionParser;
 use WsdlToPhp\PackageGenerator\Parser\Wsdl\TagUnion as TagUnionParser;
 use WsdlToPhp\PackageGenerator\Tests\TestCase;
 use WsdlToPhp\PackageGenerator\Model\AbstractModel;
 use WsdlToPhp\PackageGenerator\ConfigurationReader\GeneratorOptions;
 
 abstract class AbstractFile extends TestCase
 {
 /**
 * @return Generator
 */
 public static function bingGeneratorInstance($reset = true, $gatherMethods = GeneratorOptions::VALUE_START)
 {
 return self::getInstance(self::wsdlBingPath(), $reset, $gatherMethods);
 }
 /**
 * @return Generator
 */
 public static function actonGeneratorInstance($reset = true, $gatherMethods = GeneratorOptions::VALUE_START)
 {
 return self::getInstance(self::wsdlActonPath(), $reset, $gatherMethods);
 }
 /**
 * @return Generator
 */
 public static function portalGeneratorInstance($reset = true)
 {
 return self::getInstance(self::wsdlPortalPath(), $reset);
 }
 /**
 * @return Generator
 */
 public static function reformaGeneratorInstance($reset = true)
 {
 return self::getInstance(self::wsdlReformaPath(), $reset);
 }
 /**
 * @return Generator
 */
 public static function queueGeneratorInstance($reset = true)
 {
 return self::getInstance(self::wsdlQueuePath(), $reset);
 }
 /**
 * @return Generator
 */
 public static function omnitureGeneratorInstance($reset = true, $gatherMethods = GeneratorOptions::VALUE_START)
 {
 return self::getInstance(self::wsdlOmniturePath(), $reset, $gatherMethods);
 }
 /**
 * @return Generator
 */
 public static function odigeoGeneratorInstance($reset = true)
 {
 return self::getInstance(self::wsdlOdigeoPath(), $reset);
 }
 /**
 * @return Generator
 */
 public static function payPalGeneratorInstance($reset = true, $gatherMethods = GeneratorOptions::VALUE_START)
 {
 return self::getInstance(self::wsdlPayPalPath(), $reset, $gatherMethods);
 }
 /**
 * @return Generator
 */
 public static function wcfGeneratorInstance($reset = false, $gatherMethods = GeneratorOptions::VALUE_START)
 {
 return self::getInstance(self::wsdlWcfPath(), $reset, $gatherMethods);
 }
 /**
 * @return Generator
 */
 public static function yandexDirectApiAdGroupsGeneratorInstance($reset = false, $gatherMethods = GeneratorOptions::VALUE_START)
 {
 return self::getInstance(self::wsdlYandexDirectApiAdGroupsPath(), $reset, $gatherMethods);
 }
 /**
 * @param string $wsdl
 * @return Generator
 */
 public static function getInstance($wsdl, $reset = true, $gatherMethods = GeneratorOptions::VALUE_START)
 {
 AbstractModel::purgeUniqueNames();
 AbstractModel::purgeReservedKeywords();
 $g = parent::getInstance($wsdl, $reset);
 $g
 ->setOptionPrefix('Api')
 ->setOptionAddComments(array(
 'release' => '1.1.0',
 ))
 ->setOptionCategory(GeneratorOptions::VALUE_CAT)
 ->setOptionGatherMethods($gatherMethods);
 self::applyParsers($g, $wsdl);
 return $g;
 }
 /**
 * @param Generator $generator
 * @param string $wsdlPath
 */
 private static function applyParsers(Generator $generator, $wsdlPath)
 {
 $parsers = array(
 new FunctionsParser($generator),
 new StructsParser($generator),
 new TagIncludeParser($generator),
 new TagImportParser($generator),
 new TagAttributeParser($generator),
 new TagComplexTypeParser($generator),
 new TagDocumentationParser($generator),
 new TagElementParser($generator),
 new TagEnumerationParser($generator),
 new TagExtensionParser($generator),
 new TagHeaderParser($generator),
 new TagInputParser($generator),
 new TagOutputParser($generator),
 new TagRestrictionParser($generator),
 new TagUnionParser($generator),
 new TagListParser($generator),
 );
 foreach ($parsers as $parser) {
 $parser->parse();
 }
 }
 /**
 * @param string $valid
 * @param File $file
 */
 protected function assertSameFileContent($valid, File $file, $fileExtension = 'php')
 {
 if (!is_file($file->getFileName())) {
 return $this->assertFalse(true, sprintf('Generated file "%s" could not be found', $file->getFileName()));
 }
 $validContent = file_get_contents(sprintf('%s%s.%s', self::getTestDirectory(), $valid, $fileExtension));
 $validContent = str_replace('__WSDL_URL__', $file->getGenerator()->getWsdl()->getName(), $validContent);
 $toBeValidatedContent = file_get_contents($file->getFileName());
 $this->assertSame($validContent, $toBeValidatedContent);
 unlink($file->getFileName());
 }
 }
 
 |