/** * @return Method|NULL */ public function getConstructor() { return ($ref = parent::getConstructor()) ? Method::from($this->getName(), $ref->getName()) : NULL; }
/** * Generates SK ITCBundle Command Code Generator PHPUnit Abstract Generator Generator Class Base Case * * @param InputInterface $input * @param OutputInterface $output */ public function generateClassBaseCase(InputInterface $input, OutputInterface $output) { $cases = $this->getTestConfig()->getTestsCase(); $this->writeNotice("Generating Class Tests Base Case: " . count($cases)); foreach ($cases as $configName => $configClass) { print $configName . "\n"; } return; foreach ($configCase as $configName => $configClass) { $classService = Arrays::get($configServices, $configName); $classType = Arrays::get($classService, 'class'); $classReflection = ReflectionClassType::from($classType); $classGenerator = PhpGeneratorClassType::from($classType); $classAnnotations = $classReflection->getAnnotations(); $classAnnotationsSwitch = Arrays::get($classAnnotations, 'no-test', FALSE); if (FALSE !== $classAnnotationsSwitch) { continue; } $className = $classGenerator->getName() . "Base"; if ('interface' == $classGenerator->getType() || $classGenerator->isAbstract()) { continue; } $classParent = "BaseCase"; $dependencies = array('\\ITC\\Tests\\BaseCase' => 'BaseCase'); $classGenerator->setName($className); $classGenerator->setExtends($classParent); $classGenerator->setImplements(array()); $classGenerator->setProperties(array()); $classGenerator->setMethods(array()); $classGenerator->setConsts(array()); $classNameProperty = $classGenerator->addProperty("className", $configName); $classNameProperty->setVisibility('protected'); // $classGenerator->addDocument("@runInSeparateProcess"); $classProviderData = array(); foreach ($configClass as $configClassMethod => $paramametersConfig) { $methodReflection = $classReflection->getMethod($configClassMethod); $methodGenerator = Method::from($methodReflection); $methodAnnotations = $methodReflection->getAnnotations(); $methodAnnotationsReturn = Arrays::get($methodAnnotations, 'return', NULL); $methodAnnotationsSwitch = Arrays::get($methodAnnotations, 'no-test', FALSE); if (FALSE !== $methodAnnotationsSwitch) { continue; } if ($methodReflection->isAbstract()) { continue; } if ('__construct' == $methodReflection->getName()) { continue; } if (!is_callable(array($classReflection->getName(), $methodReflection->getName()))) { continue; } $providerName = $methodReflection->getName() . "Provider"; $provider = $classGenerator->addMethod($providerName); $permutationOffset = array(); $parametersPermutations = new Permutation($paramametersConfig); foreach ($parametersPermutations as $permutation) { $permutationOffset[] = $permutation; } $classProviderData[$methodReflection->getName()] = $permutationOffset; $provider->setBody(sprintf('return $this->getProviderData("%s");', $methodReflection->getName())); } $providerData = $classGenerator->addProperty("providerData", $classProviderData); $providerData->setVisibility('protected'); $classInfo = new \SplFileInfo(dirname(str_replace($this->getRootDir(), $this->getDest(), $classReflection->getFileName())) . DIRECTORY_SEPARATOR . $classGenerator->getName() . ".php"); $classDependency = ""; foreach ($dependencies as $dependency => $dependencyClass) { $classDependency .= "\nuse " . $dependency; if ('' == $dependencyClass) { $classDependency .= " as " . $dependencyClass; } $classDependency .= ";"; } $classCode = sprintf("<?php\nnamespace %s;\n%s\n%s", $classReflection->getNamespaceName(), $classDependency, $classGenerator); $this->saveClass($classCode, $classInfo); } }