Pinq\Tests\Integration\ExpressionTrees\ExpressionEvaluationTest::assertEvaluatesTo PHP Метод

assertEvaluatesTo() приватный Метод

private assertEvaluatesTo ( callable $function, $value, $useNativeEquals = false, $namespace = __NAMESPACE__, $testSerialize = false )
$function callable
    private function assertEvaluatesTo(callable $function, $value, $useNativeEquals = false, $namespace = __NAMESPACE__, $testSerialize = false)
    {
        $interpreter = $this->verifyImplementation();
        $reflection = $interpreter->getReflection($function);
        $structure = $interpreter->getStructure($reflection);
        $bodyExpressions = $structure->getBodyExpressions();
        $this->assertCount(1, $bodyExpressions);
        $scope = $reflection->getScope();
        $evaluationContext = $scope->asEvaluationContext([], $namespace);
        $evaluator = $bodyExpressions[0]->asEvaluator($evaluationContext);
        $evaluatedValues = [];
        $evaluatedValues[] = $evaluator->evaluate();
        if ($testSerialize) {
            $evaluatedValues[] = unserialize(serialize($evaluator))->evaluate();
        }
        foreach ($evaluatedValues as $evaluatedValue) {
            if ($useNativeEquals) {
                $this->assertTrue($value == $evaluatedValue);
            } else {
                $this->assertEquals($value, $evaluatedValue);
            }
        }
    }