/** * @param \Prophecy\Doubler\Generator\Node\ArgumentNode $argument1 * @param \Prophecy\Doubler\Generator\Node\ArgumentNode $argument2 */ function its_useParentCode_causes_method_to_call_parent($argument1, $argument2) { $argument1->getName()->willReturn('objectName'); $argument2->getName()->willReturn('default'); $argument1->isVariadic()->willReturn(false); $argument2->isVariadic()->willReturn(true); $this->addArgument($argument1); $this->addArgument($argument2); $this->useParentCode(); $this->getCode()->shouldReturn('return parent::getTitle($objectName, ...$default);'); }
/** * @param \Prophecy\Doubler\Generator\Node\ClassNode $class * @param \Prophecy\Doubler\Generator\Node\MethodNode $method * @param \Prophecy\Doubler\Generator\Node\ArgumentNode $argument */ function it_overrides_properly_methods_with_args_passed_by_reference($class, $method, $argument) { $class->getParentClass()->willReturn('RuntimeException'); $class->getInterfaces()->willReturn(array('Prophecy\\Doubler\\Generator\\MirroredInterface')); $class->getProperties()->willReturn(array()); $class->getMethods()->willReturn(array($method)); $method->getName()->willReturn('getName'); $method->getVisibility()->willReturn('public'); $method->isStatic()->willReturn(false); $method->getArguments()->willReturn(array($argument)); $method->hasReturnType()->willReturn(false); $method->returnsReference()->willReturn(false); $method->getCode()->willReturn('return $this->name;'); $argument->getName()->willReturn('fullname'); $argument->getTypeHint()->willReturn('array'); $argument->isOptional()->willReturn(true); $argument->getDefault()->willReturn(null); $argument->isPassedByReference()->willReturn(true); $argument->isVariadic()->willReturn(false); $code = $this->generate('CustomClass', $class); $expected = <<<'PHP' namespace { class CustomClass extends \RuntimeException implements \Prophecy\Doubler\Generator\MirroredInterface { public function getName(array &$fullname = NULL) { return $this->name; } } } PHP; $expected = strtr($expected, array("\r\n" => "\n", "\r" => "\n")); $code->shouldBe($expected); }
private function generateArgument(ArgumentNode $arg) { $argument = '$' . $arg->getName(); if ($arg->isVariadic()) { $argument = '...' . $argument; } return $argument; }