Neos\Flow\Tests\Unit\ObjectManagement\Proxy\ProxyMethodTest::buildMethodParametersCodeRendersParametersCodeWithCorrectTypeHintsAndDefaultValues PHP Method

buildMethodParametersCodeRendersParametersCodeWithCorrectTypeHintsAndDefaultValues() public method

    public function buildMethodParametersCodeRendersParametersCodeWithCorrectTypeHintsAndDefaultValues()
    {
        $className = 'TestClass' . md5(uniqid(mt_rand(), true));
        eval('
            /**
             * @param string $arg1 Arg1
             */
            class ' . $className . ' {
                public function foo($arg1, array $arg2, \\ArrayObject $arg3, $arg4= "foo", $arg5 = TRUE, array $arg6 = array(TRUE, \'foo\' => \'bar\', NULL, 3 => 1, 2.3)) {}
            }
        ');
        $methodParameters = ['arg1' => ['position' => 0, 'byReference' => false, 'array' => false, 'optional' => false, 'allowsNull' => true, 'class' => null, 'scalarDeclaration' => false], 'arg2' => ['position' => 1, 'byReference' => false, 'array' => true, 'optional' => false, 'allowsNull' => true, 'class' => null, 'scalarDeclaration' => false], 'arg3' => ['position' => 2, 'byReference' => false, 'array' => false, 'optional' => false, 'allowsNull' => true, 'class' => 'ArrayObject', 'scalarDeclaration' => false], 'arg4' => ['position' => 3, 'byReference' => false, 'array' => false, 'optional' => true, 'allowsNull' => true, 'class' => null, 'defaultValue' => 'foo', 'scalarDeclaration' => false], 'arg5' => ['position' => 4, 'byReference' => false, 'array' => false, 'optional' => true, 'allowsNull' => true, 'class' => null, 'defaultValue' => true, 'scalarDeclaration' => false], 'arg6' => ['position' => 5, 'byReference' => false, 'array' => true, 'optional' => true, 'allowsNull' => true, 'class' => null, 'defaultValue' => [0 => true, 'foo' => 'bar', 1 => null, 3 => 1, 4 => 2.3], 'scalarDeclaration' => false]];
        $mockReflectionService = $this->createMock(ReflectionService::class);
        $mockReflectionService->expects($this->atLeastOnce())->method('getMethodParameters')->will($this->returnValue($methodParameters));
        $expectedCode = '$arg1, array $arg2, \\ArrayObject $arg3, $arg4 = \'foo\', $arg5 = TRUE, array $arg6 = array(0 => TRUE, \'foo\' => \'bar\', 1 => NULL, 3 => 1, 4 => 2.3)';
        $builder = $this->getMockBuilder(ProxyMethod::class)->disableOriginalConstructor()->setMethods(['dummy'])->getMock();
        $builder->injectReflectionService($mockReflectionService);
        $actualCode = $builder->buildMethodParametersCode($className, 'foo', true);
        $this->assertSame($expectedCode, $actualCode);
    }