/**
  * @dataProvider expressions
  */
 public function testVisit($expression, $compiled)
 {
     $visitor = new CompileMethodMatchVisitor();
     $lexer = new Lexer(new StringInputStream($expression));
     $tree = $lexer->buildTree();
     $tree->acceptVisitor($visitor);
     $this->assertEquals($compiled, $visitor->getCompiled());
 }
Esempio n. 2
0
 /**
  * @dataProvider invalidExpressions
  */
 public function testParse_invalid($expression, $exMessage)
 {
     try {
         $lexer = new Lexer(new StringInputStream($expression));
         $lexer->buildTree();
         $this->fail('Exception expected');
     } catch (Exception $ex) {
         $this->assertEquals($ex->getMessage(), $exMessage);
     }
 }
 private function doCompile(PointcutExpression $pointcutExpression, $matcherFQNClass)
 {
     $visitor = new CompileMethodMatchVisitor();
     $lexer = new Lexer(new StringInputStream($pointcutExpression->getExpression()));
     $tree = $lexer->buildTree();
     $tree->acceptVisitor($visitor);
     $compiledExpression = $visitor->getCompiled();
     $compiled = '<?php' . "\n";
     $compiled .= 'namespace ' . $this->matcherNamespace . ";\n";
     $compiled .= 'class ' . $matcherFQNClass . ' implements \\' . MethodMatcher::class . " {\n";
     $compiled .= ' private $annotationResolver;' . "\n";
     $compiled .= ' public function __construct(\\' . AnnotationResolver::class . ' $annotationResolver) {' . "\n";
     $compiled .= ' 	$this->annotationResolver = $annotationResolver;' . "\n";
     $compiled .= ' }' . "\n";
     $compiled .= '	public function match(\\ReflectionMethod $reflectionMethod) {' . "\n";
     $compiled .= '		return ' . $compiledExpression . ";\n";
     $compiled .= '	}' . "\n";
     $compiled .= '}' . "\n";
     return $compiled;
 }