Inheritance: implements Neos\Flow\Aop\Pointcut\PointcutFilterInterface
 /**
  * @test
  */
 public function reduceTargetClassNamesFiltersAllClassesNotMatchedAByClassNameFilter()
 {
     $availableClassNames = ['TestPackage\\Subpackage\\Class1', 'TestPackage\\Class2', 'TestPackage\\Subpackage\\SubSubPackage\\Class3', 'TestPackage\\Subpackage2\\Class4'];
     sort($availableClassNames);
     $availableClassNamesIndex = new Aop\Builder\ClassNameIndex();
     $availableClassNamesIndex->setClassNames($availableClassNames);
     $classNameFilter1 = new Pointcut\PointcutClassNameFilter('TestPackage\\Subpackage\\SubSubPackage\\Class3');
     $classNameFilter2 = new Pointcut\PointcutClassNameFilter('TestPackage\\Subpackage\\Class1');
     $methodNameFilter1 = new Pointcut\PointcutMethodNameFilter('method2');
     $expectedClassNames = ['TestPackage\\Subpackage\\Class1', 'TestPackage\\Subpackage\\SubSubPackage\\Class3'];
     sort($expectedClassNames);
     $expectedClassNamesIndex = new Aop\Builder\ClassNameIndex();
     $expectedClassNamesIndex->setClassNames($expectedClassNames);
     $pointcutFilterComposite = new Pointcut\PointcutFilterComposite();
     $pointcutFilterComposite->addFilter('&&', $classNameFilter1);
     $pointcutFilterComposite->addFilter('||', $classNameFilter2);
     $pointcutFilterComposite->addFilter('&&', $methodNameFilter1);
     $result = $pointcutFilterComposite->reduceTargetClassNames($availableClassNamesIndex);
     $this->assertEquals($expectedClassNamesIndex, $result, 'The wrong class names have been filtered');
 }
 /**
  * This method is used to optimize the matching process.
  *
  * @param ClassNameIndex $classNameIndex
  * @return ClassNameIndex
  */
 public function reduceTargetClassNames(ClassNameIndex $classNameIndex)
 {
     return $this->pointcutFilterComposite->reduceTargetClassNames($classNameIndex);
 }
 /**
  * Adds runtime evaluations to the pointcut filter composite
  *
  * @param string $operator The operator
  * @param string $runtimeEvaluations The runtime evaluations string
  * @param PointcutFilterComposite $pointcutFilterComposite An instance of the pointcut filter composite. The result (ie. the custom filter) will be added to this composite object.
  * @return void
  */
 protected function parseRuntimeEvaluations($operator, $runtimeEvaluations, PointcutFilterComposite $pointcutFilterComposite)
 {
     $runtimeEvaluationsDefinition = [$operator => ['evaluateConditions' => $this->getRuntimeEvaluationConditionsFromEvaluateString($runtimeEvaluations)]];
     $pointcutFilterComposite->setGlobalRuntimeEvaluationsDefinition($runtimeEvaluationsDefinition);
 }