Neos\Flow\Tests\Unit\Aop\Pointcut\PointcutFilterCompositeTest::getRuntimeEvaluationsDefintionReturnsTheEvaluationsFromAllContainedFiltersThatMatchedThePointcutWithTheCorrectOperators PHP Method

getRuntimeEvaluationsDefintionReturnsTheEvaluationsFromAllContainedFiltersThatMatchedThePointcutWithTheCorrectOperators() public method

    public function getRuntimeEvaluationsDefintionReturnsTheEvaluationsFromAllContainedFiltersThatMatchedThePointcutWithTheCorrectOperators()
    {
        $runtimeEvaluations1 = ['methodArgumentConstraint' => ['arg1' => 'eval1']];
        $runtimeEvaluations2 = ['methodArgumentConstraint' => ['arg2' => 'eval2']];
        $runtimeEvaluations3 = ['methodArgumentConstraint' => ['arg3' => 'eval3']];
        $runtimeEvaluations4 = ['methodArgumentConstraint' => ['arg4' => 'eval4']];
        $runtimeEvaluations5 = ['methodArgumentConstraint' => ['arg5' => 'eval5', 'arg6' => 'eval6']];
        $mockPointcutFilter1 = $this->getMockBuilder(Pointcut\PointcutFilterInterface::class)->disableOriginalConstructor()->getMock();
        $mockPointcutFilter1->expects($this->once())->method('getRuntimeEvaluationsDefinition')->will($this->returnValue($runtimeEvaluations1));
        $mockPointcutFilter1->expects($this->any())->method('matches')->will($this->returnValue(true));
        $mockPointcutFilter1->expects($this->any())->method('hasRuntimeEvaluationsDefinition')->will($this->returnValue(true));
        $mockPointcutFilter2 = $this->getMockBuilder(Pointcut\PointcutFilterInterface::class)->disableOriginalConstructor()->getMock();
        $mockPointcutFilter2->expects($this->once())->method('getRuntimeEvaluationsDefinition')->will($this->returnValue($runtimeEvaluations2));
        $mockPointcutFilter2->expects($this->any())->method('matches')->will($this->returnValue(false));
        $mockPointcutFilter2->expects($this->any())->method('hasRuntimeEvaluationsDefinition')->will($this->returnValue(true));
        $mockPointcutFilter3 = $this->getMockBuilder(Pointcut\PointcutFilterInterface::class)->disableOriginalConstructor()->getMock();
        $mockPointcutFilter3->expects($this->once())->method('getRuntimeEvaluationsDefinition')->will($this->returnValue($runtimeEvaluations3));
        $mockPointcutFilter3->expects($this->any())->method('matches')->will($this->returnValue(true));
        $mockPointcutFilter3->expects($this->any())->method('hasRuntimeEvaluationsDefinition')->will($this->returnValue(true));
        $mockPointcutFilter4 = $this->getMockBuilder(Pointcut\PointcutFilterInterface::class)->disableOriginalConstructor()->getMock();
        $mockPointcutFilter4->expects($this->once())->method('getRuntimeEvaluationsDefinition')->will($this->returnValue($runtimeEvaluations4));
        $mockPointcutFilter4->expects($this->any())->method('matches')->will($this->returnValue(true));
        $mockPointcutFilter4->expects($this->any())->method('hasRuntimeEvaluationsDefinition')->will($this->returnValue(true));
        $mockPointcutFilter5 = $this->getMockBuilder(Pointcut\PointcutFilterInterface::class)->disableOriginalConstructor()->getMock();
        $mockPointcutFilter5->expects($this->once())->method('getRuntimeEvaluationsDefinition')->will($this->returnValue($runtimeEvaluations5));
        $mockPointcutFilter5->expects($this->any())->method('matches')->will($this->returnValue(true));
        $mockPointcutFilter5->expects($this->any())->method('hasRuntimeEvaluationsDefinition')->will($this->returnValue(true));
        $pointcutFilterComposite = new Pointcut\PointcutFilterComposite();
        $pointcutFilterComposite->addFilter('&&', $mockPointcutFilter1);
        $pointcutFilterComposite->addFilter('&&!', $mockPointcutFilter2);
        $pointcutFilterComposite->addFilter('||', $mockPointcutFilter3);
        $pointcutFilterComposite->addFilter('||!', $mockPointcutFilter4);
        $pointcutFilterComposite->addFilter('||!', $mockPointcutFilter5);
        $expectedRuntimeEvaluations = ['&&' => ['methodArgumentConstraint' => ['arg1' => 'eval1']], '||' => ['methodArgumentConstraint' => ['arg3' => 'eval3']], '||!' => ['methodArgumentConstraint' => ['arg4' => 'eval4', 'arg5' => 'eval5', 'arg6' => 'eval6']]];
        $pointcutFilterComposite->matches('className', 'methodName', 'methodDeclaringClassName', 1);
        $this->assertEquals($expectedRuntimeEvaluations, $pointcutFilterComposite->getRuntimeEvaluationsDefinition());
    }