Mercurial > hg > isophonics-drupal-site
diff vendor/phpspec/prophecy/spec/Prophecy/Doubler/ClassPatch/MagicCallPatchSpec.php @ 0:4c8ae668cc8c
Initial import (non-working)
author | Chris Cannam |
---|---|
date | Wed, 29 Nov 2017 16:09:58 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/phpspec/prophecy/spec/Prophecy/Doubler/ClassPatch/MagicCallPatchSpec.php Wed Nov 29 16:09:58 2017 +0000 @@ -0,0 +1,140 @@ +<?php + +namespace spec\Prophecy\Doubler\ClassPatch; + +use PhpSpec\ObjectBehavior; +use Prophecy\Argument; +use Prophecy\Doubler\Generator\Node\ClassNode; +use Prophecy\Doubler\Generator\Node\MethodNode; + +class MagicCallPatchSpec extends ObjectBehavior +{ + function it_is_a_patch() + { + $this->shouldBeAnInstanceOf('Prophecy\Doubler\ClassPatch\ClassPatchInterface'); + } + + function it_supports_anything(ClassNode $node) + { + $this->supports($node)->shouldReturn(true); + } + + function it_discovers_api_using_phpdoc(ClassNode $node) + { + $node->getParentClass()->willReturn('spec\Prophecy\Doubler\ClassPatch\MagicalApi'); + $node->getInterfaces()->willReturn(array()); + + $node->addMethod(new MethodNode('undefinedMethod'))->shouldBeCalled(); + + $this->apply($node); + } + + function it_ignores_existing_methods(ClassNode $node) + { + $node->getParentClass()->willReturn('spec\Prophecy\Doubler\ClassPatch\MagicalApiExtended'); + $node->getInterfaces()->willReturn(array()); + + $node->addMethod(new MethodNode('undefinedMethod'))->shouldBeCalled(); + $node->addMethod(new MethodNode('definedMethod'))->shouldNotBeCalled(); + + $this->apply($node); + } + + function it_ignores_empty_methods_from_phpdoc(ClassNode $node) + { + $node->getParentClass()->willReturn('spec\Prophecy\Doubler\ClassPatch\MagicalApiInvalidMethodDefinition'); + $node->getInterfaces()->willReturn(array()); + + $node->addMethod(new MethodNode(''))->shouldNotBeCalled(); + + $this->apply($node); + } + + function it_discovers_api_using_phpdoc_from_implemented_interfaces(ClassNode $node) + { + $node->getParentClass()->willReturn('spec\Prophecy\Doubler\ClassPatch\MagicalApiImplemented'); + $node->getInterfaces()->willReturn(array()); + + $node->addMethod(new MethodNode('implementedMethod'))->shouldBeCalled(); + + $this->apply($node); + } + + function it_discovers_api_using_phpdoc_from_own_interfaces(ClassNode $node) + { + $node->getParentClass()->willReturn('stdClass'); + $node->getInterfaces()->willReturn(array('spec\Prophecy\Doubler\ClassPatch\MagicalApiImplemented')); + + $node->addMethod(new MethodNode('implementedMethod'))->shouldBeCalled(); + + $this->apply($node); + } + + function it_discovers_api_using_phpdoc_from_extended_parent_interfaces(ClassNode $node) + { + $node->getParentClass()->willReturn('spec\Prophecy\Doubler\ClassPatch\MagicalApiImplementedExtended'); + $node->getInterfaces()->willReturn(array()); + + $node->addMethod(new MethodNode('implementedMethod'))->shouldBeCalled(); + + $this->apply($node); + } + + function it_has_50_priority() + { + $this->getPriority()->shouldReturn(50); + } +} + +/** + * @method void undefinedMethod() + */ +class MagicalApi +{ + /** + * @return void + */ + public function definedMethod() + { + + } +} + +/** + * @method void invalidMethodDefinition + * @method void + * @method + */ +class MagicalApiInvalidMethodDefinition +{ +} + +/** + * @method void undefinedMethod() + * @method void definedMethod() + */ +class MagicalApiExtended extends MagicalApi +{ + +} + +/** + */ +class MagicalApiImplemented implements MagicalApiInterface +{ + +} + +/** + */ +class MagicalApiImplementedExtended extends MagicalApiImplemented +{ +} + +/** + * @method void implementedMethod() + */ +interface MagicalApiInterface +{ + +}