Exemplo n.º 1
0
 /**
  * Test correct extraction extends class name.
  *
  * @param string $definition
  * @param string $correctClassName
  * @param int $correctMode
  *
  * @dataProvider dpExtendsClassName
  */
 public function testExtendsClassName($definition, $correctClassName, $correctMode)
 {
     $classMeta = new ClassMetaInfo();
     $transformer = new Transformer();
     $transformer->setClassMetaInfo($classMeta);
     $transformer->setMode(T_EXTENDS);
     $this->assertSame($definition, $this->transform($transformer, $definition));
     $this->assertSame($correctClassName, $classMeta->getExtends());
     $this->assertSame($correctMode, $transformer->getMode());
 }
Exemplo n.º 2
0
 /**
  * Test correct extraction implements class names.
  *
  * @param string $definition
  * @param string $correctClassName
  * @param int $correctMode
  *
  * @dataProvider dpImplements
  */
 public function testImplements($definition, $correctClassName, $correctMode)
 {
     $classMeta = new ClassMetaInfo();
     $transformer = new Transformer();
     $transformer->setClassMetaInfo($classMeta);
     $transformer->setMode(T_IMPLEMENTS);
     $this->assertSame($definition, $this->transform($transformer, $definition));
     $this->assertSame($correctClassName, $classMeta->getImplements());
     $this->assertSame($correctMode, $transformer->getMode());
 }
Exemplo n.º 3
0
 /**
  * Test correct extraction namespace.
  *
  * @param string $definition
  * @param string $correctClassName
  * @param int $correctMode
  *
  * @dataProvider dpNamespace
  */
 public function testNamespace($definition, $correctClassName, $correctMode)
 {
     $classMeta = new ClassMetaInfo();
     $transformer = new Transformer();
     $transformer->setClassMetaInfo($classMeta);
     $transformer->setMode(T_NAMESPACE);
     $this->assertSame($definition, $this->transform($transformer, $definition));
     $this->assertSame($correctClassName, $classMeta->getNamespace());
     $this->assertSame($correctMode, $transformer->getMode());
 }
Exemplo n.º 4
0
 /**
  * @param string $definition
  * @param string $name
  * @param string $extends
  * @param array $implements
  * @param int $mode
  *
  * @dataProvider dpExtractClassMeta
  */
 public function testExtractClassMeta($definition, $name, $extends, array $implements, $mode)
 {
     $classMeta = new ClassMetaInfo();
     $transformer = new Transformer();
     $transformer->setClassMetaInfo($classMeta);
     $transformer->setMode(T_CLASS);
     $this->assertSame($definition, $this->transform($transformer, $definition));
     $this->assertSame($name, $classMeta->getName());
     $this->assertSame($extends, $classMeta->getExtends());
     $this->assertSame($implements, $classMeta->getImplements());
     $this->assertSame($mode, $transformer->getMode());
 }
Exemplo n.º 5
0
 /**
  * Test correct extract method name.
  *
  * @param string $definition
  * @param string $correctMethodName
  *
  * @dataProvider dpExtractMethodName
  */
 public function testExtractMethodName($definition, $correctMethodName)
 {
     $classMeta = new ClassMetaInfo();
     $methodMeta = new MethodMetaInfo();
     $classMeta->addMethod($methodMeta);
     $transformer = new Transformer();
     $transformer->setClassMetaInfo($classMeta);
     $mode = new MethodHeadMode();
     $mode->setTransformer($transformer);
     $this->assertSame($definition, $this->transform($mode, $definition));
     $this->assertSame($correctMethodName, $methodMeta->getName());
     $this->assertSame(Transformer::MODE_METHOD_BODY, $transformer->getMode());
 }
Exemplo n.º 6
0
 /**
  * @param string $content
  *
  * @return string
  */
 private function transform($content)
 {
     if (self::$transformer === null) {
         self::$transformer = new Transformer();
     }
     self::$transformer->setClassMetaInfo(new ClassMetaInfo());
     $tokens = token_get_all($content);
     $content = '';
     foreach ($tokens as $token) {
         if (is_array($token)) {
             list($code, $value) = $token;
         } else {
             $code = null;
             $value = $token;
         }
         $content .= self::$transformer->transform($code, $value);
     }
     return $content;
 }