Exemple #1
0
 /**
  * @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);
     }
 }